如果第一张图像上的黑色像素在第二张同位图像上也是黑色,则将其转为白色

时间:2016-09-19 20:49:55

标签: image rgb

我有两个共同定位的图像,两者都以类似的方式创建,两者的大小都是7,221 x 119像素。

我想写一个这样的逻辑:

如果图像1中某个像素(称为x)的R,G,B值= 0,0,0(黑色)并且图像2中像素x的R,G,B值= 0,0 ,0(黑色)然后将图像1中像素x的R,G,B值更改为255,255,255(白色),否则无变化。

我如何在Matlab或Python中执行此操作?

1 个答案:

答案 0 :(得分:0)

您应该可以使用Pillow包在python中执行此操作。您需要加载两个像素,检查所有颜色通道是否为0,如果是,请将它们设为255,然后再次保存图像。在Python中,0被解释为False,因此当not any(vals)仅包含零时,True将为vals

from PIL import Image

im1 = Image.open("image1.jpg")
im2 = Image.open("image2.jpg")

pixel = (0, 0)
newcolor = (255,)*3
if not any(im1.getpixel(pixel)) and not any(im2.getpixel(pixel)):
    im1.putpixel(pixel, newcolor)
im1.save('image1conv.jpg')

请注意,not any(im1.getpixel(pixel)) and not any(im2.getpixel(pixel))可以重写为not any(im1.getpixel(pixel) + im2.getpixel(pixel)),但我认为第一种方式具有更清晰的逻辑。