Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改每个像素_Python_Image Processing_Pyqt_Qimage - Fatal编程技术网

Python 如何更改每个像素

Python 如何更改每个像素,python,image-processing,pyqt,qimage,Python,Image Processing,Pyqt,Qimage,我是Python新手,我仍然不知道Qimage的像素究竟返回了什么,它似乎是rgb或rgba的元组-缺少类型声明没有帮助 我想抓住每一个像素,并改变它 newqim = QImage(imWidth, imHeight, QImage.Format_ARGB32) for xstep in range(0, imWidth - 1): for ystep in range(0, imHeight - 1): pixelValueTuple = im.getpixel((

我是Python新手,我仍然不知道Qimage的像素究竟返回了什么,它似乎是rgb或rgba的元组-缺少类型声明没有帮助 我想抓住每一个像素,并改变它

newqim = QImage(imWidth, imHeight, QImage.Format_ARGB32)
for xstep in range(0, imWidth - 1):
    for ystep in range(0, imHeight - 1):

        pixelValueTuple = im.getpixel((xstep, ystep))
        pixelR = pixelValueTuple[0]
        pixelG = pixelValueTuple[1]
        pixelB = pixelValueTuple[2]
        copiedValue = qRgb(pixelR, pixelG, pixelB)

        newqim.setPixel(xstep, ystep, copiedValue)
上面是提供的代码,我想我随后会迭代该newqim,但我无法确切了解如何在Python中做到这一点

for xstep in range(0, imWidth-1):
    for ystep in range(0, imHeight -1):

我不确定我是否理解您想要什么,但由于您是Python新手,这里有一些提示

拆包 此代码:

pixelR = pixelR[0]
pixelG = pixelValueTuple[1]
pixelB = pixelValueTuple[2]
同:

pixelR, pixelG, pixelB = pixelValueTuple[:3]
如果您确定lenpixelValueTuple==3,则它只是:

pixelR, pixelG, pixelB = pixelValueTuple
PEP-8 有点吹毛求疵,但python的家伙们对语法往往有点迷糊。请阅读PEP-8。从现在起,我将根据它命名变量,例如,变量会伤害我的眼睛

范围 您可能需要rangewidth,而不是range0,width-1

现在回到你的问题上来。 实例 结果:


从中,人们将其转换为numpy数组或opencv mat。但是opencv python绑定cv2现在与numpy配合得很好,所以大多数人只会使用numpy。谢谢,正如我所说,我对python语法/语义一无所知,所以我不确定range0,width-1在做什么。我假设它是迭代的起点,就像Java for循环一样。我得到了代码存根作为起点,我必须编写图像处理函数,如乘法、加法、伽马等。你可能需要im=QImage;然后加载'sample.png'。顺便说一句,QColor类有很多有用的方法,请查看文档。谢谢你,Paulo,你提供了很多帮助。图像确实在代码中进一步加载,只需要更好地理解如何操作它们中的每一个,欢迎使用。说清楚,你认为你的问题得到回答了吗?如果是这样,你可以通过点击左边的绿色复选标记来表明这一点——如果不是,我如何改进我的答案以使其被接受?
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> range(0, 10 - 1)
[0, 1, 2, 3, 4, 5, 6, 7, 8]
width, height = 300, 300
im = QImage(width, height, QImage.Format_ARGB32)

for x in range(im.width()):
    for y in range(im.height()):
        r, g, b, a = QColor(im.pixel(x ,y)).getRgb()
        # ... do something to r, g, b, a ...
        im.setPixel(x, y, QColor(r, g, b, a).rgb())
width, height = 100, 100
im = QImage(width, height, QImage.Format_ARGB32)

for x in range(im.width()):
    for y in range(im.height()):
        im.setPixel(x, y, QColor(255, x * 2.56, y * 2.56, 255).rgb())

im.save('sample.png')