python - 将QImage转换为具有良好性能的灰度

时间:2017-03-15 11:47:06

标签: python grayscale qimage

我有一个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)

谢谢!

1 个答案:

答案 0 :(得分:0)

对于我自己的成像平台,我使用ITU-R 601-2亮度变换将彩色图像转换为灰度图像。我不使用平均值,因为人眼对绿色然后是红色然后是蓝色最敏感。如果图像作为numpy数组加载,我执行以下操作:

  Images = 0.299*Images[:,:,0]+0.587*Images[:,:,1]+0.114*Images[:,:,2]

因此,如果从pyqt获取数组,然后再次设置数组,则可以使用它。