Image processing 用MATLAB对图像进行包围盒处理
我试图在下图中的白色斑点周围绘制一个边界框: 我喜欢这样:Image processing 用MATLAB对图像进行包围盒处理,image-processing,matlab,bounding-box,matlab-figure,Image Processing,Matlab,Bounding Box,Matlab Figure,我试图在下图中的白色斑点周围绘制一个边界框: 我喜欢这样: bw = imread('box.jpg'); bw=im2bw(bw); imshow(bw) L = bwlabel(bw); s = regionprops(L, 'Area', 'BoundingBox'); s(1); area_values = [s.Area]; idx = find((100 <= area_values) & (area_values <= 1000)); % list of al
bw = imread('box.jpg');
bw=im2bw(bw);
imshow(bw)
L = bwlabel(bw);
s = regionprops(L, 'Area', 'BoundingBox');
s(1);
area_values = [s.Area];
idx = find((100 <= area_values) & (area_values <= 1000)); % list of all the objects
%whose area is between 100 and 1000
bw2 = ismember(L, idx); %construct a binary image containing all the objects whose
%area is between 100 and 1000 by passing L and idx to ismember.
imshow(bw2)
bw=imread('box.jpg');
bw=im2bw(bw);
imshow(bw)
L=bw标签(bw);
s=区域属性(L,‘区域’、‘边界框’);
s(1);
面积_值=[s.面积];
idx=find((100Pseduo-
- 在blob中选择最大y、最大x、最小x、最小y,即blob上的点。这些是可以用于构建边界框的坐标
假设图像左上角为(0,0)
以及查找最小/最大值和索引
[r,c]=find(img==min(min(img)))
[r,c]=find(img==max(max(img)))
r、 c表示img矩阵中的行和列
- 我已在图像上标记了可用于创建边界框的点
- 缩放图像以获得更好的视图。
您尝试过图像工具箱中的regionprops吗?我认为您可以尝试使用bBoundries
boundaries = bwboundaries(blob);
numberOfBoundaries = size(boundaries);
for k = 1 : numberOfBoundaries
thisBoundary = boundaries{k};
plot(thisBoundary(:,2), thisBoundary(:,1), 'g', 'LineWidth', 2);
end
作为这个问题的第20000位观众,我将回答提问者的提问
要在页面上呈现矩形,您只需要正确解释形状的边框。您已经在s(idx)中计算过了。BoundingBox
因此,将以下两行添加到脚本中:
bb = s(idx).BoundingBox;
rectangle('Position',[bb(1) bb(2) bb(3) bb(4)],'EdgeColor','green');
您将得到:
我在上面的代码之后对其进行了三次修改。但这不是一种好的方法:imshow(bw2)矩形('Position',[s(2).形心+35,70,100],'EdgeColor','r')。非常感谢您的解释。您能告诉我如何在斑点中选择最大的y,最大的x,最小的x,最小的y吗?
bb = s(idx).BoundingBox;
rectangle('Position',[bb(1) bb(2) bb(3) bb(4)],'EdgeColor','green');