在Matlab中将点列表转换为边界框

时间:2015-09-14 02:16:45

标签: matlab transform points bounding-box

我有一个边界框:

 bbox = [10 20 50 60];

我使用以下方法将边界框转换为点列表:

 points = bbox2points(bbox);

然后我使用 affine2d transformPointsForward 对点进行旋转。现在我有了转换点,如何将它们转换回边界框?是否有一些内置功能相当于" points2bbox"?谢谢。

2 个答案:

答案 0 :(得分:1)

如果您只想从点创建一个bbox,而不必担心转换,请执行此操作。我刚做完了,就行了。

function bbox = points2bbox(roi)
% This is a function that takes in an roi (a set of four points) and
% outpouts a bbox (which is in for form of x,y,w,h, where x and y
% correspond to the lower left of the coordinates for the points. 

% MAKE SURE THAT YOUR POINTS MAKE A RECTANGLE! 
% THIS IS WHAT BBOX HERE DESCRIBES!

% Getting x and y data
x = roi(:,1);
y = roi(:,2);

% Getting width and height
width = max(x) - min(x);
height = max(y) - min(y);

% Constructing bbox
bbox = [min(x) min(y) width height]
end

其中roi(我的研究区域)是一组点,第一列为x坐标,第二列为y坐标。

答案 1 :(得分:0)

现在排序了。我只是以各种方式翻转图像,然后使用旋转角度和原始图像的尺寸(保持不变)计算新的边界框位置。