日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

凹点检测

發布時間:2023/12/31 综合教程 25 生活家
生活随笔 收集整理的這篇文章主要介紹了 凹点检测 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  1 #include <opencv2/opencv.hpp>
  2 #include <iostream>
  3 
  4 using namespace std;
  5 using namespace cv;
  6 
  7 Mat searchConcaveRegion(vector<vector<Point> >hull, Mat &src);
  8 vector<Point2f> searchConcavePoint(Mat &src);
  9 
 10 void main()
 11 {
 12     Mat img = imread("C:\4.jpg",1);
 13     Mat gray, gray_back;
 14 
 15     cvtColor(img, gray, CV_BGR2GRAY);
 16     
 17     threshold(gray, gray, 0, 255, CV_THRESH_OTSU);
 18     gray_back = gray.clone();
 19 
 20     //提取輪廓
 21     vector<vector<Point>>contours;
 22     findContours(gray, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);
 23     drawContours(img, contours, -1, Scalar(0, 0, 255), 2);
 24 
 25     Mat aotu = searchConcaveRegion(contours, gray_back);
 26     vector<Point2f> pt;
 27     pt = searchConcavePoint(aotu);
 28 
 29     line(img, pt[pt.size() - 2], pt[pt.size() - 1], Scalar(255, 0, 0), 2, 8, 0);
 30 
 31     imshow("切割線", img);
 32     waitKey(0);
 33 }
 34 
 35 /**
 36 * @brief searchConcaveRegion 尋找凹區域
 37 * @param hull  凸包點集
 38 * @param src  原圖像(二值圖)
 39 * @return 返回 圖像凹區域
 40 */
 41 Mat searchConcaveRegion(vector<vector<Point> >contours, Mat &src)
 42 {
 43     if (src.empty())
 44         return Mat();
 45 
 46     //遍歷每個輪廓,尋找其凸包
 47     vector<vector<Point>>hull(contours.size());
 48     for (unsigned int i = 0; i<contours.size(); ++i)
 49     {
 50         convexHull(Mat(contours[i]), hull[i], false);
 51     }
 52 
 53     //繪制輪廓及其凸包
 54     Mat drawing = Mat::zeros(src.rows, src.cols, CV_8UC1);
 55     for (unsigned int i = 0; i < contours.size(); ++i)
 56     {
 57         drawContours(drawing, hull, i, Scalar(255), -1, 8, vector<Vec4i>(), 0, Point());
 58         drawContours(drawing, contours, i, Scalar(0), -1, 8, vector<Vec4i>(), 0, Point());
 59     }
 60 
 61     medianBlur(drawing, drawing, 3);
 62 
 63     imshow("凹區域", drawing);
 64 
 65     return drawing;
 66 }
 67 
 68 /**
 69 * @brief searchConcavePoint
 70 * @param src 凹區域圖像
 71 * @return 返回匹配好的凹點對(2個)
 72 */
 73 vector<Point2f> searchConcavePoint(Mat &src)
 74 {
 75     vector<Point2f> ConcavePoint;
 76     //輪廓尋找  
 77     vector<vector<Point> > contour;//用來存儲輪廓  
 78     vector<Vec4i> hierarchys;
 79     findContours(src, contour, hierarchys,
 80         CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0));  //尋找輪廓  
 81 
 82     //凹區域少于2要退出  
 83     if (contour.size()<2)
 84         return ConcavePoint;
 85 
 86     //按照輪廓面積大小排序  
 87     sort(contour.begin(), contour.end(), [](const vector<Point> &s1,
 88         const vector<Point> &s2){
 89         double a1 = contourArea(s1);
 90         double a2 = contourArea(s2);
 91         return a1>a2;
 92     });
 93 
 94     int minDistance = 100000000;//最短距離  
 95     for (int i = 0; i<contour[0].size(); ++i)
 96     for (int j = 0; j<contour[1].size(); ++j)
 97     {
 98         //歐氏距離  
 99         int d = sqrt(pow((contour[0][i].x - contour[1][j].x), 2) +
100             pow((contour[0][i].y - contour[1][j].y), 2));
101         if (minDistance>d)
102         {
103             minDistance = d;
104             ConcavePoint.push_back(contour[0][i]);
105             ConcavePoint.push_back(contour[1][j]);
106         }
107     }
108     cout << "ConcavePoint0:" << ConcavePoint[ConcavePoint.size() - 2].x << "," << ConcavePoint[ConcavePoint.size() - 2].y << endl;
109     cout << "ConcavePoint1:" << ConcavePoint[ConcavePoint.size() - 1].x << "," << ConcavePoint[ConcavePoint.size() - 1].y << endl;
110 
111     return ConcavePoint;
112 }

總結

以上是生活随笔為你收集整理的凹点检测的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 一区二区三区国 | 999一区二区三区 | 欧美69影院 | 久久久久久福利 | 欧美综合在线观看 | 高清乱码免费 | 欧美一级爽aaaaa大片 | 黄色三及 | 好看的中文字幕 | 伊人激情 | 小泽玛利亚一区二区三区在线观看 | 日本少妇xxxx软件 | 少妇毛片一区二区三区粉嫩av | 182在线视频 | 久综合 | 嫩草视频国产 | 欧美一级片播放 | 免费观看黄网站 | 国产嫩草在线 | 美日韩av | 男男play呻吟动漫网站 | 亚洲第一二三区 | 日韩黄色免费电影 | 欧美日韩一级视频 | 国产片久久 | 久久久中文字幕 | 亚洲永久av | 国产夫妻露脸 | 午夜美女福利视频 | 久久久久激情 | 在线观看日批 | 久色伊人| 亚洲av永久中文无码精品综合 | 伊人网伊人网 | 99热国产| 一级aaa毛片| 综合亚洲视频 | 悠悠av| 免费黄色av | 波多野结衣视频网址 | 五月天视频网 | 拔插拔插海外华人永久免费 | 日韩有码中文字幕在线 | 精品视频亚洲 | 在线观看的av网址 | 亚洲第8页 | 爱福利视频网 | 欧美精品 日韩 | 久久一热 | 色婷婷免费 | 欧美一区二区三区精品 | 亚洲成人激情视频 | 天海翼av在线播放 | 午夜大片| 尤物在线视频观看 | 精品人妻一区二区三区视频 | 欧美岛国国产 | 成人免费黄色大片 | 欧美成人性生活 | 婷婷深爱网 | 老师上课夹震蛋高潮了 | 欧美日韩亚洲国产 | 色欧美日韩 | 色久av| 国产69精品麻豆 | 免费毛片网 | 偷偷色噜狠狠狠狠的777米奇 | 伊人啪啪网 | 国产精品久久久久免费 | h网站在线播放 | 国产经典自拍 | 亚洲免费在线观看 | 久久国产精品无码一区二区 | 中文字幕无码乱人伦 | 国产又粗又大又爽 | www.av网址 | 精品久久久久久久久久久 | 国产aⅴ激情无码久久久无码 | 成人免费黄色大片v266 | 亚洲欧洲日韩国产 | 成人av高清在线 | 久久亚洲精精品中文字幕早川悠里 | 欧美贵妇videos办公室 | 五十路av在线 | 青青在线播放 | 日韩插插 | 538国产精品视频一区二区 | 午夜精| 蜜臀一区二区三区 | 免费av手机在线观看 | av男人在线 | 久久久国产精品视频 | 男生女生羞羞网站 | 欧美色图13p | 日日干夜夜拍 | 欧美综合专区 | a级淫片 | 免费簧片在线观看 | 亚洲美女在线观看 |