最小外接矩形matlab代码
时间: 2023-07-10 10:14:20 浏览: 116
在Matlab中,最小外接矩形可以通过以下代码实现:
1. 通过regionprops函数获取二值化图像中的所有连通区域的属性信息。
```
stats = regionprops('table',BW,'BoundingBox');
```
其中,BW为二值化图像,BoundingBox为连通区域的外接矩形坐标信息。
2. 对于每个连通区域,通过rotatedRectangle函数计算其最小外接矩形的中心点坐标、长宽、旋转角度等信息。
```
for i = 1:size(stats,1)
rect = stats.BoundingBox(i,:);
[center, wh, angle] = rotatedRectangle(rect(1:2), rect(3:4), rect(5));
% center为中心点坐标,wh为长宽,angle为旋转角度
end
```
其中,rotatedRectangle函数的实现代码如下:
```
function [center, wh, angle] = rotatedRectangle(orig, wh, angle)
angle = -angle; % 由于Matlab中坐标轴方向与常规的不同,因此需要取反
angle = angle / 180 * pi; % 将角度转换为弧度
R = [cos(angle) -sin(angle); sin(angle) cos(angle)]; % 旋转矩阵
wh = wh / 2; % 将长宽转换为半长半宽
center = R * wh' + orig'; % 计算中心点坐标
wh = abs(R * [wh(1) 0; 0 wh(2)]); % 计算长宽
end
```
该函数的输入参数为原点坐标、长宽、旋转角度,输出参数为中心点坐标、长宽、旋转角度。
阅读全文