OpenCV(三十五):凸包检测

1.凸包检测介绍

凸包检测是计算凸包的一种技术,凸包就是:给定二维平面上的点集,将最外层的点连接起来构成的凸边形,它是包含点集中所有的点。

2.凸包检测函数convexHull()

void cv::convexHull ( InputArray points,

OutputArray hull,

boolclockwise = false,

bool returnPoints = true

)

  • points:输入的2D点集
  • hull:输出凸包的顶点
  • clockwise: 方向标志,当参数为true时,凸包顺序为顺时针方向,否则为逆时针方向。returnPoints:输出数据的类型标志,当参数为true时第二个参数输出的结果是凸包顶点的坐标,否则第二个参数输出的结果是凸包顶点的索引。

3.示例代码:

复制代码
//凸包检测
void Convex_hull_detection(Mat image){
    Mat gray,binary;
    cvtColor(image,gray,COLOR_BGR2GRAY);//灰度化
    threshold(gray,binary,40,255,THRESH_BINARY);//自适应二值化
    //开运算消除细小区域
    Mat k= getStructuringElement(MORPH_RECT,Size(3,3),Point(-1,-1));
    morphologyEx(binary,binary,MORPH_OPEN,k);
    //轮廓的发现与绘制
    vector<vector<Point>> contours;//轮廓
    vector<Vec4i> hierarchy;//存放轮廓结构变量
    findContours(binary,contours,hierarchy,0,2,Point());
   for(int n=0;n<contours.size();n++){
       //计算凸包
       vector<Point> hull;
       convexHull(contours[n],hull);
       //绘制凸包
       for(int i=0;i<hull.size();i++){
           //绘制凸包顶点
           circle(image,hull[i],4,Scalar(255,0,0,255),2,8,0);
           //连接凸包
           if(i==hull.size()-1){
               line(image,hull[i],hull[0],Scalar(0,0,255,255),2,8,0);
               break;
           }
           line(image,hull[i],hull[i-1],Scalar(0,0,255,255),2,8,0);
       }
   }
    imwrite("/sdcard/DCIM/hull.png",image);

}

凸包检测的结果:

相关推荐
还是鼠鼠4 分钟前
【Spring AI智能体实战 02】Spring Boot 3.4整合Spring AI:项目创建与依赖配置
java·人工智能·spring boot·maven·spring ai
武子康4 分钟前
GPT-5.6 Sol 的 ARC-AGI-3 分数为何翻近三倍:Agent 评测必须记录整套运行合同
人工智能·chatgpt·agent
极客猴子5 分钟前
Android录音转写频繁卡顿?多款APP长时间会议场景稳定性实测
android·人工智能·智能手机·飞书
ShallWeL15 分钟前
Orin 上目标检测 + 大模型做端侧应用
人工智能·目标检测·大模型·端侧
A555666777878917 分钟前
2026国产OpenClaw替代方案商深度测评:政务级、轻量化、高性能、私有化厂商推荐
人工智能
今天AI了吗20 分钟前
【AI智能体】Hermes Agent 从部署到项目实战操作详解
java·人工智能·python·milvus
AI人工智能+22 分钟前
学位证书识别技术通过计算机视觉、自然语言处理和大模型推理相结合,实现了高精度、高效率的证书数字化处理
深度学习·计算机视觉·自然语言处理·ocr·学位证书识别
旖旎夜光25 分钟前
LeetCode 738:单调递增的数字(贪心算法) —— 题解
数据结构·c++·算法·leetcode·贪心算法
六边形战士DONK29 分钟前
16-估计量的评选标准[无偏性,有效性,相合性,均方误差准则]
人工智能·机器学习·概率论
旖旎夜光34 分钟前
LeetCode 1262:可被三整除的最大和 (贪心算法)—— 题解
数据结构·c++·算法·leetcode·贪心算法