QT-图像灰度处理时QImage.setPixel方法存在的坑

遇到的问题

对图像进行二值化的时候,把QImage::Format_Grayscale8 格式的图像丢进了QImage的setPixel方法。得到的像素点全都是int32的最小值。

这是错的
SetPixel只支持RGB格式
对Format_Grayscale8应该用bits()来获取像素点的值

解决方案

  1. 灰度化处理: - 使用 bits() 方法直接访问和修改QImage::Format_Grayscale8像素数据。
  • 计算灰度值:int grayValue = (color.red() + color.green() + color.blue()) /

3; - 设置灰度值:bits[y * grayImg.bytesPerLine() + x] = grayValue;

QImage类有一个**bits()**方法,返回一个指向图像数据的指针,允许你直接操作图像的像素值。
grayImg.bytesPerLine():这是QImage对象的一个方法,它返回每行像素数据的字节数。对于8位灰度图像,每个像素占用1字节