OpenCV结构分析与形状描述符(16)判断两个凸多边形是否相交的函数intersectConvexConvex()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

查找两个凸多边形的交集。

intersectConvexConvex 是一个在 OpenCV 中用于判断两个凸多边形是否相交的函数。此函数可以帮助我们确定两个二维凸多边形是否在平面上有重叠区域。

函数原型

cpp 复制代码
float cv::intersectConvexConvex
(
	InputArray 	p1,
	InputArray 	p2,
	OutputArray 	p12,
	bool 	handleNested = true 
)		

参数

  • 参数p1 第一个多边形
  • 参数p2 第二个多边形
  • 参数p12 表示相交区域的输出多边形
  • 参数handleNested 当为真时,如果一个多边形完全包含在另一个多边形内,则会找到相交部分。当为假时,则不会找到相交部分。如果多边形共享一条边或一个顶点位于另一个多边形的边上,它们不被视为嵌套,无论 handleNested 的值如何,都会找到相交部分。

代码示例

cpp 复制代码
#include <iostream>
#include <opencv2/opencv.hpp>

int main()
{
    // 定义两个矩形的顶点
    cv::Mat p1 = ( cv::Mat_< float >( 4, 2 ) << 0, 0,  // 左上角
                   2, 0,                               // 右上角
                   2, 2,                               // 右下角
                   0, 2 );                             // 左下角

    cv::Mat p2 = ( cv::Mat_< float >( 4, 2 ) << 1, 1,  // 左上角
                   3, 1,                               // 右上角
                   3, 3,                               // 右下角
                   1, 3 );                             // 左下角

    // 定义一个矩阵来存储交集的顶点
    cv::Mat p12;

    // 调用 intersectConvexConvex 函数
    bool intersect = cv::intersectConvexConvex( p1, p2, p12, true );

    if ( intersect )
    {
        std::cout << "Polygons intersect." << std::endl;
        std::cout << "Intersection vertices:" << std::endl;
        for ( int i = 0; i < p12.rows; ++i )
        {
            cv::Point2f pt = p12.at< cv::Point2f >( i );
            std::cout << "Vertex " << i << ": (" << pt.x << ", " << pt.y << ")" << std::endl;
        }
    }
    else
    {
        std::cout << "Polygons do not intersect." << std::endl;
    }

    return 0;
}

运行结果

bash 复制代码
Polygons intersect.
Intersection vertices:
Vertex 0: (2, 1)
Vertex 1: (2, 2)
Vertex 2: (1, 2)
Vertex 3: (1, 1)
相关推荐
刘大猫.4 分钟前
OpenAI通过两个开源模型GPT-OSS-120B和GPT-OSS-20B重新拥抱开放性
人工智能·gpt·大模型·openai·算力·gpt-oss-120b·gpt-oss-20b
EDPJ4 分钟前
(2026|成电,超图,图文融合和对齐,高阶推理/将异常显式地推理为语义-结构一致性的违反)H2VLR:用于少样本异常检测的异构超图视觉语言推理
人工智能·计算机视觉·异常检测
LONGZETECH7 分钟前
汽车仿真教学平台支持在线理论考试吗?实操解析+行业案例
人工智能·科技·架构·数据挖掘·汽车·汽车仿真教学软件·新能源汽车仿真教学软件
blackorbird13 分钟前
数据投毒Ai训练集行动开始走向社区化作战
人工智能
机器之心17 分钟前
蒸馏所有员工:Meta强制收集鼠标键盘输入训练AI,社区炸了
人工智能·openai
阿里云大数据AI技术25 分钟前
打造具身智能数据基石:阿里云PAI赋能具身数据高效处理
人工智能·机器人
金融小师妹26 分钟前
AI政策框架解析:凯文·沃什货币体系重构与美联储治理范式转型
大数据·人工智能·重构·逻辑回归
旦莫27 分钟前
测试工程师如何用AI生成测试用例?我的提示词模板分享
人工智能·python·测试开发·自动化·测试用例·ai测试
UCloud_TShare33 分钟前
优刻得发布云搜索服务CSS:面向AI时代的企业级搜索基础设施
前端·css·人工智能
卷积殉铁子38 分钟前
从Symphony到AGI宣言,GPT-6的真相比噱头更复杂
人工智能·gpt·chatgpt