У меня есть два объекта QImage, которые должны быть равны, но результат QImage::operator==
является false
, Поэтому я хочу напечатать все необработанные данные двух объектов для сравнения. Как это сделать? Можно ли это сделать с помощью qDebug ()?
Если вы хотите напечатать значения каждого пикселя, то используйте метод QImage bits (), чтобы получить указатель на все значения пикселей в беззнаковых символах и просто распечатать их в цикле for. Например, если у вас есть 32-битные изображения, то в таблице, возвращаемой битами (), у вас будет 4 значения для каждого пикселя (красный, зеленый, синий, альфа) и чтобы узнать, сколько из них у вас есть, только используйте width () * height () * 4 (если это 32-битная глубина). Или Вы можете сравнить каждый пиксель вместо печати и вернуть только те, которые отличаются.
С помощью qDebug() << QImage()
распечатает что-то вроде QImage(QSize(0, 0) )
,
Вы могли бы использовать const uchar * QImage::constBits()
Функция, чтобы получить указатель на данные первого пикселя, а затем выполнить итерацию по данным пикселя, печатая значения.
Я предлагаю вам написать функцию для сравнения двух изображений, побайтно, и вернуть смещение там, где они разные.
Сравнение данных изображений вручную часто утомительно и может привести к ошибкам.