试图保存图像的红色位置

5次浏览(最近30天)
你好,
我试图用红色保存图像的所有位置。
我= imread (“image.png”);
if (im(:,:,1) == 36),则返回0。
这段代码给了我一个空数组。为什么会这样?我该怎么解决呢?

接受的答案

图像分析
图像分析 8月7日
奥利弗,这作品:
rgbImage = imread (“image.png”);
次要情节(1、2、1);
imshow (rgbImage);
impixelinfo;让你移动鼠标查看rgb值。
%分割图像到组件:
[r, g, b] = imsplit(rgbImage);
%红点为r=237, g=28, b=36。
%戴红色口罩
redMask = r > 200 & g < 50 & b < 50;
次要情节(1、2、2);
imshow (redMask);
%获取红色像素所在的行和列
[redRows, redColumns] = find(redMask)
redRows和redColumns是图像中每个红色像素的行、列坐标配对,按列主顺序排列。不知道你会怎么做 用这个,但你已经知道了。
2的评论
图像分析
图像分析 8月7日
你有一个老版本。试试这个
r = rgbImage(:,:, 1);
g = rgbImage(:,:, 2);
b = rgbImage(:,:, 3);

登录评论。

答案(1)

Sudheer Bhimireddy
你的图像有红色的值吗?仔细检查它。
要测试代码,请遵循下面的示例。
一个= imread (“ngc6543a.jpg”);%阅读MATLAB示例图
A_read = (:,: 1);读取红色通道
A_ind = find(A_read == 36);%查找值为36的非零值
A_sz =大小(A_read);
[A_row, A_col] = ind2sub (A_sz A_ind);将线性索引转换为矩阵下标
如果你将上面的find语句改为
A_ind = find(A_read == 3600);
你会得到一个空的A_ind数组,因为A_read里面没有这样的值。
10评论

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!