opencv - 如何计算两个旋转矩形的重叠率?

标签 opencv geometry

给定两个矩形,我们知道四个角的位置、宽度、高度、角度。 如何计算这两个矩形的重叠率? 你能帮帮我吗?

最佳答案

一个方便的方法是通过 Sutherland-Hodgman多边形裁剪算法。它的工作原理是用另一个多边形的四条支撑线(半平面)裁剪其中一个多边形。最后你得到相交多边形(最差的是八边形)并通过 polygon area 找到它的面积公式。

enter image description here

您可以通过围绕原点反向旋转多边形使其中一个成为轴平行来使剪裁更容易。这不会改变区域。

请注意,这种方法可以很容易地推广到两个一般的凸多边形,采用 O(N.M) 操作。 G.T. Toussaint 使用旋转卡尺原理将工作量减少到 O(N+M),而 B. Chazelle 和 D. P. Dobkin 表明可以在 O(Log(N+M)) 操作中检测到​​非空交叉点。这表明 S-H 裁剪方法可能还有一点改进空间,即使 N=M=4 是一个小问题。

关于opencv - 如何计算两个旋转矩形的重叠率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26460514/

相关文章:

image - 使用 Matlab 将形状检测为圆形

image-processing - 解释霍夫变换

algorithm - 矩形可以放在另一个矩形里面吗?

python - TensorFlow 中的高效图像膨胀

geometry - 如何使用 Xbim 从 IFC 文件中检索几何图形?或者这个任务还有其他替代方案吗?

python - 通过使用 cv2.VideoCapture 降低 fps

opencv - HOG探测器: relation between detected roi size and training sample size

android - 需要算法的帮助来像这样从当前位置计算位置(几何二维)

android - 安装后 OpenCV Android 库错误

python - 在桌面壁纸 Ubuntu 上转换 TensorFlow 对象检测的输出