0

正如标题所说,我希望能够用遇到的不同像素的最后一个像素来改变像素的颜色。例如,在下图中,我希望能够将黑色像素替换为橙色像素,但是简单地说如果像素 == 黑色,像素 = 橙色将不起作用,因为我计划将代码应用于更复杂的图片。下面的代码是我最初的尝试:感谢任何帮助!

 for y in xrange(image_test.size[1]):
    for x in xrange(image_test.size[0]):
        currentPixel_2 = image_test.getpixel((x,y))
        if currentPixel_2 == (0,0,0):
            currentPixel_2 =

在此处输入图像描述

4

1 回答 1

0

您可以通过使用一个变量来保存您遇到的前一个像素的值来做到这一点。

previous_pixel = None
for y in xrange(image_test.size[1]):
    for x in xrange(image_test.size[0]):
        currentPixel_2 = image_test.getpixel((x,y))
        if currentPixel_2 == (0,0,0) and previous_pixel:
            image_test.putpixel((x,y), previous_pixel)
        else:
            previous_pixel = currentPixel_2

我认为大多数线条在这里应该很明显,但基本上,如果你不在黑色像素上,你在循环中做的最后一件事就是将当前像素分配给previous_pixel,所以你的下一次通过循环,如果它是黑色的,您已准备好使用先前的像素值。

这条线if currentPixel_2 == (0,0,0) and previous_pixel是为了以防你的第一个像素是黑色的,而你还没有previous_pixel值,我只是跳过它,尽管你可以做你想做的事。解决第一个像素问题的另一种方法是previous_pixel在开始循环之前分配一些值。

另外,顺便说一句,您在这里迭代单个像素,这将相当慢。如果您需要加快速度,可以使用 numpy.

于 2013-10-13T04:03:18.810 回答