2013-05-12 188 views
1

我正尝试在Opencv中使用RGB图像。从图像我只想保留红色像素,其余我想设置为白色。我不确定如何在opencv中执行此逻辑。图像被读作Mat。更改Mat中的像素值opencv

我写了下面的代码,但它不工作。

Mat image; 
for(i to rows) 
for(j to col) 
{ 
b=input[image.step * j + i] 
g=input[image.step * j + i + 1] 
r=input[image.step * j + i + 2] 
if(r == 255 && g&b == 0) 
{ 
image.at<Vec3f>(j,i)=img.at<Vec3F>(j,i) 
} 

else image.push_back(0); 

这是代码我写

我相信它的不正确,但我无法做到这一点。我能否获得一些帮助

回答

3

您只想保留那些纯粹是红色的像素,即红色是255和绿色,蓝色是零。基本上,你想改变不满足该条件的像素:

if(~(red == 255 and green == 0 and blue == 0)) 
    red = green = blue = 255 

下面是在Python代码:

img = cv2.imread(filename) 
rows , cols , layers = img.shape 

for i in range(rows): 
    for j in range(cols): 
     if(~(img[i][j][2] == 255 and img[i][j][0] == 0 and img[i][j][1] == 0)): 
      img[i][j][0] = img[i][j][1] = img[i][j][2] = 255