坚持cv2中的颜色变化

时间:2017-11-20 14:38:51

标签: python cv2

我只是cv2的新手。我正在测试一个程序,将图像的所有绿色像素转换为白色。
I have chosen this sample image:

这是我的python程序。

import cv2
import numpy as np

img=cv2.imread('exp.jpg',cv2.IMREAD_COLOR)
row,cols,layer=img.shape


for i in range (row):
    for j in range (cols):
     a=img[i,j]
     if(a[1]>128):
      img[i, j] = [255, 255, 255]
cv2.imshow('a',img)


cv2.waitKey(0)
cv2.destroyAllWindows()

该程序工作得非常好,但所需图片的某些部分也会丢失。
This is the output image

我不知道出了什么问题。我甚至通过

检查了那个像素的BGR值
print(img[432,144])

它的输出是[37 209 37]。我不认为它的实际颜色,因为当我在rgbtohex.net中使用它们来查看颜色时,它就像它一样。 我不知道那里出了什么问题。如果我对任何事情都不对,请原谅我。

1 个答案:

答案 0 :(得分:1)

您必须重新考虑if声明,才能更好地处理这些图片,而不包含不需要的像素。对于exemaple [0 255 255]是Cyan但它也将被包括在if(a[1]>128): a[1] = 255if 255 > 128中。

现在我们知道我们希望G具有高值,RB低值,示例解决方案为if(a[1] > 200 and a[0] < 128 and a[2] < 128)

当然,我的示例可能比你在不同的图像上更糟糕,这就是为什么你想先使用一些图像处理工具。你可以在这里了解更多信息image procesing