1

我正在尝试在 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);

这是我写的代码

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

4

1 回答 1

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
于 2013-05-12T09:40:59.287 回答