亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C > 正文

Opencv實現輪廓提取功能

2020-01-26 13:27:35
字體:
來源:轉載
供稿:網友

輪廓:一個輪廓代表一系列的點(像素),這一系列的點構成一個有序的點集,所以可以把一個輪廓理解為一個有序的點集。

在opencv中,提供了一個函數返回一個有序的點集或者有序的點集的集合(指多個有序的點集),函數findContour是從二值圖像中來計算輪廓的,一般使用Canny()函數處理后的圖像,因為這樣的圖像含有邊緣像素。

尋找輪廓的API函數:

findContours(image,vector<vector<Point>> contours,vector<Vec4i>hierarchy,int mode,int method,Point offset = Point(0,0));

參數解釋:

(1)image:單通道圖像矩陣,一般是經過canny處理后的二值圖像;

(2)contours:vector<vector<Point>>類型,是一個向量,并且是一個雙重向量,向量內每個元素保存了一組由連續的Point點構成的點的集合的向量,每一組Point點集就是一個輪廓。有多少輪廓,向量contours就有多少元素;

(3)hierarchy:vector<Vec4i> 類型, 即容器內每一個元素都是一個包含了4個int型變量的向量,向量內每個元素保存了一個包含4個int整型的數組。向量hiararchy內的元素和輪廓向量contours內的元素是一一對應的,向量的容量相同。hierarchy向量內每一個元素的4個int型變量――hierarchy[i][0] ~hierarchy[i][3],分別表示第i個輪廓的后一個輪廓、前一個輪廓、父輪廓、內嵌輪廓的索引編號。如果當前輪廓沒有對應的后一個輪廓、前一個輪廓、父輪廓或內嵌輪廓的話,則hierarchy[i][0] ~hierarchy[i][3]的相應位被設置為默認值-1;

(4)mode:int類型的,定義輪廓的檢索模式:

  • CV_RETR_EXTERNAL只檢測最外圍輪廓,包含在外圍輪廓內的內圍輪廓被忽略;
  • CV_RETR_LIST   檢測所有的輪廓,包括內圍、外圍輪廓,但是檢測到的輪廓不建立等級關系,彼此之間獨立,沒有等級關系,這就意味著這個檢索模式下不存在父輪廓或內嵌輪廓,所以hierarchy向量內所有元素的第3、第4個分量都會被置為-1,具體下文會講到;
  • CV_RETR_CCOMP  檢測所有的輪廓,但所有輪廓只建立兩個等級關系,外圍為頂層,若外圍內的內圍輪廓還包含了其他的輪廓信息,則內圍內的所有輪廓均歸屬于頂層;
  • CV_RETR_TREE, 檢測所有輪廓,所有輪廓建立一個等級樹結構。外層輪廓包含內層輪廓,內層輪廓還可以繼續包含內嵌輪廓。   

(5)method:int類型,定義輪廓的近似方法:  

  • CV_CHAIN_APPROX_NONE 保存物體邊界上所有連續的輪廓點到contours向量內;
  • CV_CHAIN_APPROX_SIMPLE 僅保存輪廓的拐點信息,把所有輪廓拐點處的點保存入contours向量內,拐點與拐點之間直線段上的信息點不予保留;
  • CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法;                   

(6) Point:偏移量,所有的輪廓信息相對于原始圖像對應點的偏移量,相當于在每一個檢測出的輪廓點上加上該偏移量,一般不偏移取Point(0,0)。

畫輪廓的API函數:

drawContours(Outputimage,contours,hierarchy,int contourIdx,color,int thickness ,int lineType,hierarchy = noArray(),int maxLevel = INT_MAX,Point offset = Point(0,0))
參數解釋:

    (1)outputimage: 將輪廓畫在該圖上;
    (2)contours:前面尋找到的輪廓;
    (3)contourIdx:是一個索引,代表繪制contours中的第幾個輪廓;
    (4) color:顏色;
    (5)thickness: 線寬;
    (6)lineType: 線型;
    (7)hierarchy:可選層次信息結構,這里面是findContours所的到的基于Contours的層級信息;
    (8)maxLevel: 繪制輪廓的最大等級。如果等級為0,繪制單獨的輪廓。如果為1,繪制輪廓及在其后的相同的級別下輪廓。如果等級為2,繪制所有同級輪廓及所有低一級輪廓,諸此種種。如果值為負數,函數不繪制同級輪廓,但會升序繪制直到級別為abs(max_level)-1的子輪廓;

    (9)offset:照給出的偏移量移動每一個輪廓點坐標.當輪廓是從某些感興趣區域(ROI)中提取的然后需要在運算中考慮ROI偏移量時,將會用到這個參數。

以上定義摘自該篇博客:OpenCV實現輪廓的發現

#include<opencv2/opencv.hpp>using namespace cv;using namespace std; int value = 50;Mat src, dst, canny_img;void callback(int, void*);int main(int arc, char** argv){   src = imread("2.jpg"); namedWindow("src",CV_WINDOW_AUTOSIZE); imshow("src", src); cvtColor(src, src, CV_BGR2GRAY);  namedWindow("output", CV_WINDOW_AUTOSIZE); createTrackbar("threshold", "output", &value, 255, callback); callback(0, 0); waitKey(0); return 0;}void callback(int, void*) { Canny(src, canny_img, value, 2 * value); imshow("canny", canny_img); vector<vector<Point>>contours; vector<Vec4i>hierarchy; findContours(canny_img, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE,Point(0,0));  dst = Mat::zeros(src.size(), CV_8UC3); RNG rng(1); for (int i = 0; i < contours.size(); i++) {  Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); drawContours(dst, contours, i, color, 2, 8, hierarchy, 0, Point(0, 0)); } imshow("output", dst);} 

運行結果如下:

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美三级免费观看| 欧美精品久久久久| 亚洲欧洲国产精品| 国产视频精品一区二区三区| 国产97在线视频| 成人免费网视频| 欧美性videos高清精品| 欧美激情性做爰免费视频| 日韩欧美在线视频免费观看| 日韩电影免费观看中文字幕| 这里只有精品久久| 在线日韩中文字幕| 国产精品久久久久久久久久小说| 亚洲精品综合久久中文字幕| 午夜免费在线观看精品视频| 欧美日韩福利视频| 欧美日韩国产成人在线观看| 国产精品海角社区在线观看| 国内精品400部情侣激情| 国产精品成人久久久久| 狠狠干狠狠久久| 狠狠做深爱婷婷久久综合一区| 91久久久久久国产精品| 久久久亚洲欧洲日产国码aⅴ| 亚洲人午夜精品免费| 欧美华人在线视频| 国产精品自拍视频| 国产精品无码专区在线观看| 91精品国产自产91精品| 久久久久久久久久久久久久久久久久av| 欧美情侣性视频| 亚洲成人av片| 丁香五六月婷婷久久激情| 亚洲视频欧美视频| 亚洲一区二区三区四区在线播放| 国产亚洲欧洲在线| 国产精品一区二区三区在线播放| 国产日韩精品在线播放| 亚洲欧美中文日韩v在线观看| 久久久极品av| 8x海外华人永久免费日韩内陆视频| 欧美黑人视频一区| 国产一区二区三区丝袜| 亚洲精品网址在线观看| 欧美成人sm免费视频| 亚洲在线免费观看| 国产亚洲精品久久久久久777| 成人激情av在线| 欧美日韩成人在线视频| 国产91露脸中文字幕在线| 国内免费久久久久久久久久久| 97在线免费观看视频| 亚洲第一色中文字幕| 日韩在线免费视频观看| 国产视频欧美视频| 亚洲一区久久久| 国产精品扒开腿爽爽爽视频| 日韩电影在线观看免费| 尤物yw午夜国产精品视频| 欧美性受xxxx白人性爽| 欧美中文字幕在线视频| 欧美xxxwww| 久久久久久免费精品| 日韩免费电影在线观看| 57pao成人永久免费视频| 91久久久久久久久久久久久| 亚洲a中文字幕| 欧美激情视频播放| 日韩成人网免费视频| 久久精品男人天堂| 精品日韩中文字幕| 国产91色在线| 日韩精品在线免费播放| 国产日韩中文在线| 日韩av一区二区在线| 在线成人激情视频| 亚洲国产中文字幕久久网| 精品久久久久久久久久| 美乳少妇欧美精品| 日韩中文字幕免费看| 国产做受69高潮| 热99在线视频| 国产精品中文字幕久久久| 青青青国产精品一区二区| 国产v综合v亚洲欧美久久| 欧美日韩一区二区在线播放| 狠狠爱在线视频一区| 国产一区二区三区四区福利| 国产精品444| 亚洲欧美日韩一区二区在线| 亚洲欧美一区二区精品久久久| 伊人伊人伊人久久| 亚洲肉体裸体xxxx137| 欧美激情喷水视频| 成人写真视频福利网| 清纯唯美亚洲综合| 另类视频在线观看| 亚洲精品久久久一区二区三区| 久久久av亚洲男天堂| 久久精品国产免费观看| 欧美成人h版在线观看| 美女少妇精品视频| 欧美一级视频一区二区| 久久久久久高潮国产精品视| 午夜免费久久久久| 国产精品久久久久久久av电影| 2021国产精品视频| 一区二区三区亚洲| 日韩国产欧美区| 成人精品aaaa网站| 国产一区二区三区精品久久久| 国产精品免费观看在线| 国产精品免费视频久久久| 日韩成人中文字幕| 亚洲精品在线视频| 久久99精品久久久久久青青91| www.国产一区| 欧日韩在线观看| 亚洲淫片在线视频| 久久久久999| 中文字幕无线精品亚洲乱码一区| 国产精品流白浆视频| 欧美黑人视频一区| 91国偷自产一区二区三区的观看方式| 欧美xxxx14xxxxx性爽| 日韩中文字幕久久| 亚洲免费电影一区| 亚洲欧洲国产一区| 亚洲欧美日本精品| 色爱精品视频一区| 中文字幕不卡av| 57pao国产精品一区| 国产精品视频精品| 欧美麻豆久久久久久中文| 日韩欧美一区二区三区久久| www国产亚洲精品久久网站| 欧美一区二区三区免费视| 久久久成人精品视频| 91av在线免费观看视频| 国产精品jizz在线观看麻豆| 久久99精品久久久久久噜噜| 欧美诱惑福利视频| 久久香蕉国产线看观看网| 久久精品国产亚洲精品2020| 久久久之久亚州精品露出| 中文字幕亚洲字幕| 久久久电影免费观看完整版| 伊人久久免费视频| 欧美日韩亚洲91| 亚洲一区二区三区四区在线播放| 91精品国产91久久久久久不卡| 欧美国产日产韩国视频| 精品国产欧美成人夜夜嗨| 亚洲成色777777女色窝| 亚洲xxxx做受欧美| 国产一区二区三区在线看| 另类少妇人与禽zozz0性伦| 欧美精品18videos性欧| 欧美日韩国产一区在线| 在线观看视频99| 欧美大成色www永久网站婷| 亚洲国产精品视频在线观看| 中文字幕国产精品久久| 45www国产精品网站|