遇到的问题
对图像进行二值化的时候,把QImage::Format_Grayscale8 格式的图像丢进了QImage的setPixel方法。得到的像素点全都是int32的最小值。
这是错的。
SetPixel只支持RGB格式
对Format_Grayscale8应该用bits()来获取像素点的值
解决方案
- 灰度化处理: - 使用 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字节