3

我正在尝试对使用 OpenCV 围绕图像中某些对象获得的旋转矩形的纵横比设置阈值。要将旋转矩形的纵横比与阈值进行比较,我需要取旋转矩形的较长尺寸和较短尺寸的比率。

在这方面我很困惑:OpenCV 中的约定是什么?rotateRectanlge.size.width 是否总是小于 rotateRectangle.size.height?即,旋转矩形的宽度是否总是分配给 OpenCV 中旋转矩形的两个维度中的较小者?

我尝试运行一些代码来找到答案。而且,看起来rotatedRectangle.size.width 实际上是rotatedRectangle 的较小尺寸。但我仍然希望遇到类似情况的任何人确认一下。

编辑:我使用 fitEllipse 来获得旋转的矩形,我的 OpenCV 版本是 2.4.1。

请帮忙!

4

1 回答 1

2

正如文档所说,旋转矩形本身没有约定

该类表示平面上的旋转(即不是直立)矩形。每个矩形由中心点(质心)、每条边的长度(由 cv::Size2f 结构表示)和以度为单位的旋转角度指定。

但是,您没有指定创建旋转矩形的函数或操作 - 例如,如果您使用fitEllipse它可能是算法的一些内部细节更喜欢使用更大(或更小)尺寸作为宽度(或高度)。

也许您可以用更多信息评论或编辑您的问题。就目前而言,如果您想要较长:较短尺寸的比例,您需要先专门测试哪个较长。

编辑

看了OpenCV源码后,fitEllipse函数包含如下代码

if( box.size.width > box.size.height )
{
    float tmp;
    CV_SWAP( box.size.width, box.size.height, tmp );
    box.angle = (float)(90 + rp[4]*180/CV_PI);
}

所以,至少对于这个实现来说,宽度似乎总是被视为较短的维度。但是,我不会依赖于在未来的实施中保持真实。

于 2013-07-17T07:53:11.903 回答