欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Opencv實(shí)現(xiàn)輪廓提取功能

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

成都創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)專(zhuān)家,致力于互聯(lián)網(wǎng)品牌建設(shè)與網(wǎng)絡(luò)營(yíng)銷(xiāo),專(zhuān)業(yè)領(lǐng)域包括成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、電商網(wǎng)站制作開(kāi)發(fā)、微信小程序定制開(kāi)發(fā)、微信營(yíng)銷(xiāo)、系統(tǒng)平臺(tái)開(kāi)發(fā),與其他網(wǎng)站設(shè)計(jì)及系統(tǒng)開(kāi)發(fā)公司不同,我們的整合解決方案結(jié)合了恒基網(wǎng)絡(luò)品牌建設(shè)經(jīng)驗(yàn)和互聯(lián)網(wǎng)整合營(yíng)銷(xiāo)的理念,并將策略和執(zhí)行緊密結(jié)合,且不斷評(píng)估并優(yōu)化我們的方案,為客戶(hù)提供全方位的互聯(lián)網(wǎng)品牌整合方案!

在opencv中,提供了一個(gè)函數(shù)返回一個(gè)有序的點(diǎn)集或者有序的點(diǎn)集的集合(指多個(gè)有序的點(diǎn)集),函數(shù)findContour是從二值圖像中來(lái)計(jì)算輪廓的,一般使用Canny()函數(shù)處理后的圖像,因?yàn)檫@樣的圖像含有邊緣像素。

尋找輪廓的API函數(shù):

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

參數(shù)解釋?zhuān)?/strong>

(1)image:?jiǎn)瓮ǖ缊D像矩陣,一般是經(jīng)過(guò)canny處理后的二值圖像;

(2)contours:vector<vector<Point>>類(lèi)型,是一個(gè)向量,并且是一個(gè)雙重向量,向量?jī)?nèi)每個(gè)元素保存了一組由連續(xù)的Point點(diǎn)構(gòu)成的點(diǎn)的集合的向量,每一組Point點(diǎn)集就是一個(gè)輪廓。有多少輪廓,向量contours就有多少元素;

(3)hierarchy:vector<Vec4i> 類(lèi)型, 即容器內(nèi)每一個(gè)元素都是一個(gè)包含了4個(gè)int型變量的向量,向量?jī)?nèi)每個(gè)元素保存了一個(gè)包含4個(gè)int整型的數(shù)組。向量hiararchy內(nèi)的元素和輪廓向量contours內(nèi)的元素是一一對(duì)應(yīng)的,向量的容量相同。hierarchy向量?jī)?nèi)每一個(gè)元素的4個(gè)int型變量——hierarchy[i][0] ~hierarchy[i][3],分別表示第i個(gè)輪廓的后一個(gè)輪廓、前一個(gè)輪廓、父輪廓、內(nèi)嵌輪廓的索引編號(hào)。如果當(dāng)前輪廓沒(méi)有對(duì)應(yīng)的后一個(gè)輪廓、前一個(gè)輪廓、父輪廓或內(nèi)嵌輪廓的話(huà),則hierarchy[i][0] ~hierarchy[i][3]的相應(yīng)位被設(shè)置為默認(rèn)值-1;

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

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

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

  • CV_CHAIN_APPROX_NONE 保存物體邊界上所有連續(xù)的輪廓點(diǎn)到contours向量?jī)?nèi);
  • CV_CHAIN_APPROX_SIMPLE 僅保存輪廓的拐點(diǎn)信息,把所有輪廓拐點(diǎn)處的點(diǎn)保存入contours向量?jī)?nèi),拐點(diǎn)與拐點(diǎn)之間直線(xiàn)段上的信息點(diǎn)不予保留;
  • CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法;                   

(6) Point:偏移量,所有的輪廓信息相對(duì)于原始圖像對(duì)應(yīng)點(diǎn)的偏移量,相當(dāng)于在每一個(gè)檢測(cè)出的輪廓點(diǎn)上加上該偏移量,一般不偏移取Point(0,0)。

畫(huà)輪廓的API函數(shù):

drawContours(Outputimage,contours,hierarchy,int contourIdx,color,int thickness ,int lineType,hierarchy = noArray(),int maxLevel = INT_MAX,Point offset = Point(0,0))
參數(shù)解釋?zhuān)?/p>

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

    (9)offset:照給出的偏移量移動(dòng)每一個(gè)輪廓點(diǎn)坐標(biāo).當(dāng)輪廓是從某些感興趣區(qū)域(ROI)中提取的然后需要在運(yùn)算中考慮ROI偏移量時(shí),將會(huì)用到這個(gè)參數(shù)。

以上定義摘自該篇博客:OpenCV實(shí)現(xiàn)輪廓的發(fā)現(xiàn)。

#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);
} 

運(yùn)行結(jié)果如下:

Opencv實(shí)現(xiàn)輪廓提取功能

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

網(wǎng)站欄目:Opencv實(shí)現(xiàn)輪廓提取功能
分享鏈接:http://aaarwkj.com/article20/peeoco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化網(wǎng)站維護(hù)、響應(yīng)式網(wǎng)站、靜態(tài)網(wǎng)站、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

中文字幕人妻丝袜一区一三区| 濑亚美莉在线观看一区二区三区| 亚洲午夜精品毛片成人| 日本东京热加勒比视频| 日本激情诱惑免费在线播放| 濑亚美莉在线观看一区二区三区| 欧美午夜精品福利在线观看| 亚洲成色在线综合剧情网站 | 内射极品美女在线观看| 萌白的所有视频在线观看| 欧美日韩国产成人一区| 在线观看后入大屁股| 日韩免费av在线观看| 91一区二区亚洲嫩草| 久久精品国产91麻豆| 九九热视频这里是精品| 一区二区高清免费日本| 日本一区二区三区日韩欧美| 欧美亚洲国语精品一区二区| 色噜噜噜欧美人妻色综合| 91高清视频在线免费观看| 国产一区二区伦理视频| 白白色成人在线免费视频| av在线观看亚洲天堂| 日韩欧美国产精品自拍| 黄片在线免费在线播放| 国产三级一区二区不卡| 欧美三级欧美一级视频看| 亚洲精品福利一二三区| 怡红院一区二区三区毛片| 一区二区精品人妻av| 国产欧美一区二区三区久久| 国产激情一区二区三区| 免费在线黄色生活大片| 97青青草免费在线视频| 欧美日韩精品综合国产| 国产精品一区二区麻豆本子| 护士一级特黄特色大片| 欧美日韩一区二区高清在线| 国产三级精品大乳人妇| 成年人性生活网站视频|