通过rgb值matlab获得像素协调

时间:2017-11-12 21:18:05

标签: matlab image-processing computer-vision rgb pixel

如何通过matlab中的rgb值获取图像中像素的x,y坐标?

例如:我有一张图片,我想找到其中黑色区域的像素坐标..

2 个答案:

答案 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,无论如何都应该通过在比较期间隐式转换值来实现。