我正在尝试使用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);
这是我写的代码
我确定它不正确,但我无法做到。我可以得到一些帮助
答案 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