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)
相关推荐
rundreamsFly12 分钟前
【云馨AI】基于 AI 的 COSMIC智能文档工具 第二代功能点评估:从效率到精准度的全面升级
人工智能·cosmic编写·cosmic
北京耐用通信12 分钟前
调试复杂、适配难?耐达讯自动化Ethercat转Devicenet让继电器通讯少走弯路
人工智能·物联网·网络协议·自动化·信息与通信
人工智能教学实践13 分钟前
AI大模型时代,计算机视觉课程如何™教”与“学”?
人工智能·计算机视觉
智源研究院18 分钟前
智源开源 Reason-RFT:用强化学习重塑视觉推理,突破 VLM 泛化瓶颈
人工智能
DFT计算杂谈20 分钟前
ABINIT能带计算数据处理脚本
数据库·人工智能
BioRunYiXue20 分钟前
双荧光素酶报告基因实验
java·运维·服务器·数据库·人工智能·数据挖掘·eclipse
数据皮皮侠27 分钟前
政府创新采购数据库(2016-2024)
大数据·数据库·人工智能·制造·微信开放平台
综合热讯30 分钟前
泛微发布数智业财融合创新方案,AI驱动组织构建“业·财·票·税·档”一体化
大数据·人工智能
c#上位机31 分钟前
halcon创建对象数组——concat_obj
图像处理·计算机视觉·c#·halcon
捷智算云服务32 分钟前
A100云主机租赁价格贵吗?具体费用是多少?
服务器·人工智能·云计算·gpu算力