我有这个图片:
在这张图片中,我有11个形状(看起来像椭圆形)。我想找到每个形状中每个像素的RGB(包括白色边缘/边界,因为它是形状的一部分)。
如果有帮助,我会得到每个形状的中心坐标。
非常感谢!
答案 0 :(得分:2)
当我回顾这个问题时,这是一个hacky解决方案:
现在您只需获取粉红色像素列表:
foundPixels = find(img == pink); % pink holds the value for the pink color I used.
现在,您可以在原始图像(pixels = original(foundPixels);
)上使用这些索引来获取所需的像素。
答案 1 :(得分:2)
以下是使您的工作轻松的命令......
正如“Superbest”所说用命令填充图像
%% Example%%
img = imread('coins.png');
BW4 = im2bw(img );
BW5 = imfill(BW4,'holes');
imshow(BW4), figure, imshow(BW5);
现在使用命令bwlabeln()来查找簇或形状的数量。
%% Example%%
L = bwlabel(BW5);
figure,imshow(L,[]);
L将为您提供具有相同编号的形状的数量,以使所有像素属于相同的形状。 L包含BW中连接组件的标签。 BW可以有任何尺寸; L与BW的大小相同。 L的元素是大于或等于0的整数值。标记为0的像素是背景。标记为1的像素构成一个对象,标记为2的像素构成第二个对象,依此类推。
假设您有两个形状或区域,那么可以按如下方式找到原始颜色或灰度值。
%% Example%%
cods = find(L==1);
Shape1(1:size(img,1),1:size(img,2))=0;
Shape1(cods) = img(cods);
%% Now shape1 is same size as img, but will have gray scale values at region1 locations only,you will get RGB valuse in shape1 image.. repeate it for as many shapes as you have in your image.
有一个快乐的编码...