我有一个QImage,需要将这些位转换为灰度。
现在我只是计算RGB的平均值并将其写入像素属性:
Img = QtGui.QImage(300,600, QtGui.QImage.Format_RGB888)
for x in range(299):
for y in range(599):
gray = self.npPixmap[y][x] * 256
Img.setPixel(x, y, QtGui.QColor(gray,gray,gray).rgb())
这需要大约1,5s,我想有一半的时间。
在此c++ question是一个解决方案,扫描图片的每一行并立即转换每一行。不幸的是我无法适应python。我找不到像
这样的功能reinterpret_cast<QRgb*>(scan + jj*depth)
谢谢!
答案 0 :(得分:0)
对于我自己的成像平台,我使用ITU-R 601-2亮度变换将彩色图像转换为灰度图像。我不使用平均值,因为人眼对绿色然后是红色然后是蓝色最敏感。如果图像作为numpy数组加载,我执行以下操作:
Images = 0.299*Images[:,:,0]+0.587*Images[:,:,1]+0.114*Images[:,:,2]
因此,如果从pyqt获取数组,然后再次设置数组,则可以使用它。