聊城网站开发公司,南宁企业网站设计,海山网站建设,搭建网页游戏操作系统#xff1a;ubuntu22.04 OpenCV版本#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言#xff1a;C11
算法描述
测试轮廓的凸性。 该函数测试输入的轮廓是否为凸的。轮廓必须是简单的#xff0c;即没有自相交。否则#xff0c;函数的输出是不确定的。
cv:… 操作系统ubuntu22.04 OpenCV版本OpenCV4.9 IDE:Visual Studio Code 编程语言C11
算法描述
测试轮廓的凸性。 该函数测试输入的轮廓是否为凸的。轮廓必须是简单的即没有自相交。否则函数的输出是不确定的。
cv::isContourConvex 函数是 OpenCV 提供的一个用于判断轮廓是否为凸多边形的函数。这个函数可以用来验证一个给定的轮廓是否是凸的这对于后续处理如使用 intersectConvexConvex 来寻找两个凸多边形的交集是非常有用的。
函数原型
bool cv::isContourConvex
(InputArray contour
) 参数
参数contour 输入的二维点向量存储在 std::vector 或 Mat 中
代码示例 #include iostream
#include opencv2/opencv.hppint 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 ); // 左下角// 验证轮廓是否为凸多边形bool isP1Convex cv::isContourConvex( p1 );bool isP2Convex cv::isContourConvex( p2 );std::cout Polygon p1 is convex: std::boolalpha isP1Convex std::endl;std::cout Polygon p2 is convex: std::boolalpha isP2Convex std::endl;// 如果两个多边形都是凸的才继续进行交集计算if ( isP1Convex isP2Convex ){cv::Mat p12;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;}}else{std::cout One or both polygons are not convex. std::endl;}return 0;
}运行结果
Polygon p1 is convex: true
Polygon p2 is convex: true
Polygons intersect.
Intersection vertices:
Vertex 0: (2, 1)
Vertex 1: (2, 2)
Vertex 2: (1, 2)
Vertex 3: (1, 1)