我有一个Matlab程序,要求用户在场景中的人周围画一个矩形(稍后我使用imcrop提取该区域)。我需要强制用户绘制一个正方形的。我正在使用imrect函数,但我无法强制使用正方形,也无法找到关于如何实现的文档。
发布于 2015-05-07 21:04:03
imrect似乎可以将位置约束函数作为输入参数。这一职能规定如下:
每当对象由于鼠标拖动而被移动时,约束函数将使用以下语法调用: constrained_position = fcn(new_position)
位置是形式[xleft ybottom width height]的向量。
所以试试这个:
axis equal %// same sccale on both axes
axis manual %// freeze axes size
h = imrect('PositionConstraintFcn', @(x) [x(1) x(2) min(x(3),x(4))*[1 1]])发布于 2015-05-07 21:04:29
最简单的方法是在矩形创建期间将setFixedAspectRatioMode方法设置为true,最初绘制一个正方形。(检查这里)。
示例:
%// Make sure it's initially a square!!
hRect = imrect(gca, [10 10 100 100]);
setFixedAspectRatioMode(hRect,1)那么,无论你如何改变立场,它仍将是一个正方形。但是,请注意,与Luis的解决方案相反,用户不能指定正方形的初始位置。
https://stackoverflow.com/questions/30111434
复制相似问题