OpenCV每日函数 结构分析和形状描述符(7) 寻找多边形(轮廓)/旋转矩形交集

一、intersectConvexConvex函数

1、函数原型

        查找两个凸多边形的交集。返回相交多边形面积的绝对值。intersectConvexConvex 不确认两个多边形都是凸的,如果不是,将返回无效结果。

float 	cv::intersectConvexConvex (InputArray p1, InputArray p2, OutputArray p12, bool handleNested=true)

2、参数详解

p1 第一个轮廓
p2 第二个轮廓
p12 描述相交区域的输出多边形
handleNested 当为真时,如果一个多边形完全包含在另一个多边形中,则找到一个交点。 如果为 false,则找不到交集。 如果多边形共享一条边或一个多边形的顶点位于另一个多边形的边上,则它们不被视为嵌套,无论handleNested 的值如何,都将找到交点。

二、rotatedRectangleIntersection函数

1、函数原型

        该函数找出两个旋转矩形之间是否有任何交集。如果存在,则也返回相交区域的顶点。

int 	cv::rotatedRectangleIntersection (const RotatedRect &rect1, const RotatedRect &rect2, OutputArray intersectingRegion)

2、参数详解

rect1 第一个矩形
rect2 第二个矩形
intersectingRegion 相交区域顶点的输出数组。 它最多返回 8 个顶点。 存储为 std::vector<cv::Point2f> 或 cv::Mat 作为 CV_32FC2 类型的 Mx1。

3、示意图像

        以下是可能的交点的一些示例。 阴影图案表示相交区域,红色顶点由函数返回。

交叉点示例

猜你喜欢

转载自blog.csdn.net/bashendixie5/article/details/125424491
今日推荐