这是MATLAB代码中用于计算图像中对象数量的步骤之一。
B = bwboundaries(img2);
imshow(img2)
text(10,10,strcat('\color{green}Objects Found:',num2str(length(B))))
hold on
虽然对代码的解释是
> This step finds the boundaries of each object that it finds and stores
> it in B. The text function prints the number of objects that are found
> by bwboundaries.
但是我无法理解第3步。任何人都可以简要解释每行的代码。 谢谢。
答案 0 :(得分:2)
有关bwboundaries
的帮助,请参阅the help file for that function。
imshow(img2)
...在图窗口中显示图片img2
。
length(B)
...给出矢量(或矩阵)B的标量长度,例如, 8
。
num2str(length(B))
...将此数字转换为字符串,例如'8'
。
strcat('\color{green}Objects Found:',num2str(length(B)))
...将字符串'8'
附加到字符串\color{green}Objects Found:
的开头。在这种情况下,您最终会得到一个完整的字符串:
\color{green}Objects Found:8
text
功能将此文本定位在当前轴的指定位置,在本例中为位置(10,10)。其中棘手的部分是文本字符串的\color{green}
部分,它告诉MATLAB使文本变为绿色(并且在绘制文本时不显示)。
`hold on`
...防止绘制到相同轴的新项目删除当前项目。
您可以使用help
命令从MATLAB中了解大多数这些命令。例如。输入help bwboundaries
:
>> help bwboundaries
bwboundaries Trace region boundaries in binary image.
B = bwboundaries(BW) traces the exterior boundary of objects, as well
as boundaries of holes inside these objects. It also ... <snip>
答案 1 :(得分:1)
除了@ BillCheatman的回答,您可能需要了解BWBOUNDARIES函数正在做什么以及它返回的内容。查看documentation以获取完整的解释和示例。
你也会发现
bwboundaries返回B,一个P-by-1单元格数组,其中P是数字 物体和洞。
因此语句length(B)
将为您提供最大的单元格数组B
,在上面的引文中找到P
或找到的对象数。
答案 2 :(得分:1)
“text(10,10,strcat('\ color {green} Objects Found:',num2str(length(B))))”这一行是在(10,10)的位置写一行文字)在图像上。
“B = bwboundaries(img2);”这个是计算img2的边界,它应该是二进制图像。
我们以此图片为例:
从这张图片中,我们可以看到有四条边。因此,使用“B = bwboundaries(img2);”,我们将得到B,这是一个4单元数据。每个单元格是一个n * 2矩阵,它存储每个边缘点坐标。所以矩阵的每一行都是一个边缘点。对于我们的例子,有四条边,它们的图如下所示。