更改Mat opencv中的Pixel值

时间:2013-05-12 06:10:59

标签: opencv image-processing

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

我编写了以下代码,但它无效。

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);

这是我写的代码

我确定它不正确,但我无法做到。我可以得到一些帮助

1 个答案:

答案 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