如何通过matlab中的rgb值获取图像中像素的x,y坐标?
例如:我有一张图片,我想找到其中黑色区域的像素坐标..
答案 0 :(得分:2)
如果要查找值为(R, G, B)
的所有像素坐标,则
[y, x] = find(img(:,:,1)==R & img(:,:,2)==G & img(:,:,3)==B);
对于黑色像素,请选择R=0, G=0, B=0
答案 1 :(得分:0)
有一个内置函数可以执行此操作:impixel
。
从官方文档:
Return Individual Pixel Values from Image
% read a truecolor image into the workspace
RGB = imread('myimg.png');
% determine the column c and row r indices of the pixels to extract
c = [1 12 146 410];
r = [1 104 156 129];
% return the data at the selected pixel locations
pixels = impixel(RGB,c,r)
% result
pixels =
62 29 64
62 34 63
166 54 60
59 28 47
链接:https://it.mathworks.com/help/images/ref/impixel.html
[编辑]
好的,我误解了你的问题。因此,要完成您正在寻找的内容,只需使用以下代码:
img = imread('myimg.png');
r = img(:,:,1) == uint8(0);
g = img(:,:,2) == uint8(0);
b = img(:,:,3) == uint8(255);
[rows_idx,cols_idx] = find(r & g & b);
上面的例子找到图像中的所有纯蓝色像素(#0000FF)并返回它们的索引。您还可以避免将值转换为uint8
,无论如何都应该通过在比较期间隐式转换值来实现。