OpenCV(三十五):凸包检测

简介: 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);
}

凸包检测的结果:

目录
相关文章
|
7月前
|
算法 计算机视觉
OpenCV(四十三):Shi-Tomas角点检测
OpenCV(四十三):Shi-Tomas角点检测
100 0
|
7月前
|
计算机视觉
OpenCV(三十八):二维码检测
OpenCV(三十八):二维码检测
238 0
|
7月前
|
编解码 计算机视觉
OpenCV(三十六):霍夫直线检测
OpenCV(三十六):霍夫直线检测
154 0
|
7月前
|
存储 资源调度 算法
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
Opencv(C++)系列学习---SIFT、SURF、ORB算子特征检测
405 0
|
2月前
|
计算机视觉
Opencv学习笔记(八):如何通过cv2读取视频和摄像头来进行人脸检测(jetson nano)
如何使用OpenCV库通过cv2模块读取视频和摄像头进行人脸检测,并提供了相应的代码示例。
129 1
|
2月前
|
机器学习/深度学习 计算机视觉
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
本文介绍了如何使用OpenCV进行特定区域的目标检测,包括人脸检测实例,展示了两种实现方法和相应的代码。
91 1
目标检测笔记(六):如何结合特定区域进行目标检测(基于OpenCV的人脸检测实例)
|
2月前
|
算法 计算机视觉 Python
圆形检测算法-基于颜色和形状(opencv)
该代码实现了一个圆检测算法,用于识别视频中的红色、白色和蓝色圆形。通过将图像从RGB转换为HSV颜色空间,并设置对应颜色的阈值范围,提取出目标颜色的区域。接着对这些区域进行轮廓提取和面积筛选,使用霍夫圆变换检测圆形,并在原图上绘制检测结果。
96 0
|
7月前
|
存储 算法 计算机视觉
OpenCV(四十二):Harris角点检测
OpenCV(四十二):Harris角点检测
110 0
|
5月前
|
机器学习/深度学习 传感器 算法
OpenCV4工业缺陷检测的六种方法
OpenCV4工业缺陷检测的六种方法
|
6月前
|
存储 编解码 算法
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
【Qt&OpenCV 检测图像中的线/圆/轮廓 HoughLinesP/HoughCircles/findContours&drawContours】
116 0