Как распечатать все необработанные данные QImage для сравнения в памяти?

У меня есть два объекта QImage, которые должны быть равны, но результат QImage::operator== является false, Поэтому я хочу напечатать все необработанные данные двух объектов для сравнения. Как это сделать? Можно ли это сделать с помощью qDebug ()?

0

Решение

Если вы хотите напечатать значения каждого пикселя, то используйте метод QImage bits (), чтобы получить указатель на все значения пикселей в беззнаковых символах и просто распечатать их в цикле for. Например, если у вас есть 32-битные изображения, то в таблице, возвращаемой битами (), у вас будет 4 значения для каждого пикселя (красный, зеленый, синий, альфа) и чтобы узнать, сколько из них у вас есть, только используйте width () * height () * 4 (если это 32-битная глубина). Или Вы можете сравнить каждый пиксель вместо печати и вернуть только те, которые отличаются.

1

Другие решения

С помощью qDebug() << QImage() распечатает что-то вроде QImage(QSize(0, 0) ),

Вы могли бы использовать const uchar * QImage::constBits() Функция, чтобы получить указатель на данные первого пикселя, а затем выполнить итерацию по данным пикселя, печатая значения.

1

Я предлагаю вам написать функцию для сравнения двух изображений, побайтно, и вернуть смещение там, где они разные.

Сравнение данных изображений вручную часто утомительно и может привести к ошибкам.

1
По вопросам рекламы [email protected]