用matlab代码实现利用Matlab函数bwboundaries(...)实现coins.png”硬币图像的二值化图像轮廓跟踪,输出各区域的质心、周长、面积等;
时间: 2024-03-22 22:38:00 浏览: 70
以下是MATLAB代码实现,用于实现对硬币图像的二值化图像轮廓跟踪,并输出各区域的质心、周长、面积等:
```matlab
% 读取图像并转换为灰度图像
img = imread('coins.png');
gray = rgb2gray(img);
% 二值化
thresh = graythresh(gray);
bw = imbinarize(gray, thresh);
% 轮廓跟踪
[B, L] = bwboundaries(bw, 'noholes');
% 输出各区域的质心、周长、面积等
stats = regionprops(L, 'Centroid', 'Perimeter', 'Area');
% 显示结果
figure, imshow(img)
hold on
for k = 1:length(B)
boundary = B{k};
plot(boundary(:,2), boundary(:,1), 'r', 'LineWidth', 2)
text(stats(k).Centroid(1), stats(k).Centroid(2), ...
sprintf('Perimeter: %.2f\nArea: %d', stats(k).Perimeter, stats(k).Area), ...
'Color', 'green', 'FontSize', 8, 'HorizontalAlignment', 'center')
end
```
运行代码后,将显示原始图像,并在图像上绘制硬币的轮廓,并在每个硬币的质心处显示其周长和面积等信息。
阅读全文