【发布时间】:2013-08-19 12:29:06
【问题描述】:
我有两个应该相等的 QImage 对象,但 QImage::operator== 的结果是 false。所以我想打印两个对象的所有原始数据进行比较。怎么做?用qDebug()能做到吗?
【问题讨论】:
-
我建议您将图像保存到磁盘并进行比较
我有两个应该相等的 QImage 对象,但 QImage::operator== 的结果是 false。所以我想打印两个对象的所有原始数据进行比较。怎么做?用qDebug()能做到吗?
【问题讨论】:
我建议你编写一个函数来逐字节比较两个图像,并返回它们不同的偏移量。
手动比较图像数据通常很乏味,并且可能会导致错误。
【讨论】:
如果您想打印每个像素的值,则使用 QImage 的 bits() 方法获取指向 unsigned char 中所有像素值的指针,然后在 for 循环中打印它们。例如,如果您有 32 位图片,那么在 bits() 返回的表中,每个像素(红色、绿色、蓝色、Alpha)将有 4 个值,并且要知道其中有多少您只使用了 width()*height ()*4(如果是 32 位深度)。或者您可以比较每个像素而不是打印,只返回不同的像素。
【讨论】:
使用qDebug() << QImage() 将打印出类似QImage(QSize(0, 0) ) 的内容。
您可以使用const uchar * QImage::constBits() 函数获取指向第一个像素数据的指针,然后遍历像素数据,打印值。
【讨论】: