【问题标题】:changing pixel color with setPixel用 setPixel 改变像素颜色
【发布时间】:2019-11-19 18:34:59
【问题描述】:

我有一张黑白图片,需要逐像素编辑。如果像素太暗,则其颜色应更改为黑色。这是我的代码:

    for i in range(width):
        for j in range(height):
            pixel_value = int(hex(self.img.pixel(i, j))[8:], 16)

            if pixel_value < 110:
                self.img.setPixel(i, j, .......)

所以问题是我不知道如何将颜色传递给 setPixel()。 AFAIK 它应该类似于

self.img.setPixel(i, j, qRgb(0, 0, 0))

我正在使用 PyQt5.12.3,但我不知道如何导入 qRgb。 PyQt5.QtGui 只有 qRgba64。如果 qRgba64 也适用于 setPixel() 那么我如何使用 qRgba64 传递黑色?

【问题讨论】:

    标签: python pyqt pyqt5


    【解决方案1】:

    我觉得你指出的问题很奇怪,因为如果 PyQt5 5.12.3 中存在类 qRgb(我也在 PyQt5 5.13.0 中测试过):

    image.setPixel(i, j, QtGui.qRgb(0, 0, 0))
    

    但无论如何,如果你想使用setPixelColor() 并将 QRgba64 转换为 QColor:

    image.setPixelColor(i, j, QtGui.QColor(QtGui.QRgba64.fromRgba(0, 0, 0, 255)))
    

    或者更好的使用QColor:

    image.setPixelColor(i, j, QtGui.QColor(0, 0, 0))
    

    【讨论】:

    • 谢谢!我猜问题出在pyCharm中。它说 qRgb 出了点问题(它显示红色下划线)但是当我运行程序时它仍然可以正常工作
    • PyCharm 在尝试获取有关 PyQt5 某些类的信息时存在错误,因此请不要忽视它
    猜你喜欢
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-12
    相关资源
    最近更新 更多