C++使用opencv判断一个点是否在多边形之内

简介: C++使用opencv判断一个点是否在多边形之内

代码如下:


#include <opencv2/opencv.hpp>
CvMat* g_pMatContour = NULL;
static void process(...)
{
    if (g_pMatContour == NULL)
    {
        float points[] ={470,240, 1670,168, 1846,688, 714,928};
        int nContourNum = 4;
        g_pMatContour = cvCreateMat(1, nContourNum, CV_32FC2);
        for (int i=0; i<nContourNum; i++)
        {
            CvScalar vertex = cvScalar(points[i*2], points[i*2+1]);
            cvSet1D(pMatContour, i, vertex);
        }
    }
    CvPoint2D32f ptTest;
    //center point
    ptTest.x = pClip->left + pClip->width /2;
    ptTest.y = pClip->top  + pClip->height/2;
    double jl = cvPointPolygonTest(g_pMatContour, ptTest, 1);
    //jl > 0表示在内部。jl<0表示在外部。jl=0表示在多边形上。
    if (jl > 0)
    {
        //WARNING MESSAGE
    }

目录
相关文章
|
6月前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
206 7
|
22天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
198 3
|
5月前
|
算法 开发工具 计算机视觉
【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示
【零代码研发】OpenCV实验大师工作流引擎C++ SDK演示
75 1
|
2月前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
58 11
|
2月前
|
存储 计算机视觉 C++
在C++中实现Armadillo库与OpenCV库之间的数据格式转换
在C++中实现Armadillo库与OpenCV库之间的数据格式转换是一项常见且实用的技能。上述步骤提供了一种标准的方法来进行这种转换,可以帮助开发者在两个库之间高效地转移和处理数据。虽然转换过程相对直接,但开发者应留意数据类型匹配和性能优化等关键细节。
22 3
|
5月前
|
存储 Cloud Native Linux
OpenCV多边形填充与绘制
OpenCV多边形填充与绘制
|
5月前
|
计算机视觉 C++
【见微知著】OpenCV中C++11 lambda方式急速像素遍历
【见微知著】OpenCV中C++11 lambda方式急速像素遍历
47 0
|
6月前
|
算法 Serverless 计算机视觉
【OpenCV】- 多边形将轮廓包围
【OpenCV】- 多边形将轮廓包围
|
6月前
|
人工智能 机器人 Linux
【C++】Linux下如何查看opencv的版本
【C++】Linux下如何查看opencv的版本
153 0
|
6月前
|
算法 C++ 计算机视觉
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
Opencv(C++)学习系列---Laplacian拉普拉斯边缘检测算法
278 0