圖像輪廓

邊緣檢測雖然能檢測出邊緣凉驻,但邊緣是不連續(xù)的,并不是一個(gè)整體艳丛。圖像輪廓是將邊緣連接起來形成的一個(gè)整體匣掸,用于后續(xù)的計(jì)算。圖像輪廓是圖像中非常重要的一個(gè)特征信息氮双,通過圖像輪廓的操作碰酝,可以獲取目標(biāo)圖像的大小、位置戴差、方向等信息送爸。

cv2.findContours()函數(shù)可以查找圖像內(nèi)的輪廓信息,而cv2.drawContours()能夠?qū)⑤喞L制出來暖释。

1.查找并繪制圖像輪廓

image, contours, hierarchy=cv2.findContours(img,mode,method)

返回值image: 與函數(shù)參數(shù)中的圖像image一致袭厂。在OpenCV 4.X中,該返回值已經(jīng)被取消球匕;

返回值contours: 返回的輪廓纹磺。是list類型,每個(gè)元素都是一個(gè)輪廓的信息亮曹,由此可以知道每個(gè)輪廓點(diǎn)的個(gè)數(shù)和位置橄杨。list的長度反映了輪廓的個(gè)數(shù)。

hierachy: 圖像的拓?fù)湫畔ⅲㄝ喞獙哟危┱肇浴S涗涊喞c輪廓之間的關(guān)系式矫,每個(gè)輪廓(Contours列表的子元素)對應(yīng)一個(gè)四個(gè)元素來說明當(dāng)前輪廓的層次關(guān)系([next,Previous,First_child,parent])。輪廓的層次結(jié)構(gòu)是由mode參數(shù)決定的役耕。不同的mode得到的輪廓編號不一樣衷佃,hierachy也不一樣。

方法的參數(shù):

image:原始圖像蹄葱。8位單通道圖像氏义,所有非零值被處理為1锄列,所有零值保持不變。也就是灰度圖會被自動(dòng)處理為二值圖像惯悠。我們通沉谟剩可以用閾值處理等函數(shù)將待查輪廓的圖像處理為二值圖像。

mode: 輪廓檢索模式克婶。決定了輪廓的提取方式筒严,具體有四種:cv2.RETR_EXTERNAL,只檢測外輪廓;cv2.RETR_LIST情萤,對檢測到的輪廓不建立等級關(guān)系鸭蛙;cv2.RETR_CCOMP,檢測所有輪廓并將它們組織成兩級層次結(jié)構(gòu)筋岛,上面一層為外邊界娶视,下面一層為內(nèi)孔的邊界。如果內(nèi)孔內(nèi)還有一個(gè)連通的物體睁宰,則這個(gè)物體的邊界仍然位于頂層肪获;cv2.RETR_TREE,建立一個(gè)等級樹結(jié)構(gòu)的輪廓。

method: 輪廓的近似方法柒傻。決定了如何表達(dá)輪廓孝赫,可以為如下值:

CV2.CHAIN_APPROX_NONE:儲存所有的輪廓點(diǎn),相鄰兩個(gè)點(diǎn)的像素位置差不超過1红符;

CV2.CHAIN_APPROX_SIMPLE:壓縮水平方向青柄、垂直方向、對角線方向的元素预侯,只保留該方向的終點(diǎn)坐標(biāo)(例如極端情況下可以用四個(gè)點(diǎn)保存輪廓信息)致开;

CV2.CHAIN_APPROX_TC89_L1:使用tehCHINl chain近似算法的一種風(fēng)格;

CV2.CHAIN_APPROX_TC89_KCOS:使用tehCHINl chain近似算法的一種風(fēng)格雌桑。

2.繪制圖像輪廓

在OpenCV中喇喉,可以使用函數(shù)cv2.drawContours()

cv2.drawContours(image,contours,contourIdx,color[,thickness[,lineType[,hierarchy[,maxLevel[,offset]]]]])

參數(shù):

image: 待繪制輪廓的圖像。要注意校坑,該函數(shù)會在圖像image的基礎(chǔ)上繪制輪廓拣技,所以這里最好用原始圖像的備份,以免改變原始圖像耍目。

contours: 需要繪制的輪廓膏斤,該參數(shù)類型與findContours()輸出的contours相同,都是list邪驮;

contourIdx: 需要繪制的邊緣索引莫辨,告訴該函數(shù)繪制那一條輪廓。若參數(shù)為負(fù)數(shù)(通常是-1),則表示繪制所有輪廓沮榜;

color: 繪制的顏色盘榨,用BGR表示;

thickness: j可選參數(shù)蟆融,表示繪制輪廓的畫筆的粗細(xì)草巡。如將該值設(shè)置為-1,則表示要繪制實(shí)心輪廓型酥;

lineType: 可選參數(shù)山憨,表示繪制輪廓時(shí)所用的線型

hierarchy: 對應(yīng)函數(shù)cv2.findContours()輸出的層次信息;

maxLevel:控制所繪制的輪廓層次的深度弥喉。如果值為0郁竟,表示僅繪制第0層德輪廓;如果為其他非零正數(shù)由境,表示繪制最高層及以下的相同數(shù)量層級的輪廓棚亩;

offset:偏移參數(shù)。該參數(shù)使輪廓偏移到不同位置展示出來藻肄。

3.實(shí)例

1)提取并繪制圖像輪廓·:

代碼
運(yùn)行結(jié)果蔑舞,繪制了152個(gè)輪廓

2)使用輪廓繪制功能拒担,提取前景·對象:


代碼

將contourIdx 設(shè)置為2嘹屯,提取編號為2的輪廓;thickness設(shè)置為-1从撼,將輪廓填充為實(shí)心州弟,顏色為(255,255,255)。之后將mask與原圖像進(jìn)行一次與或按位運(yùn)算低零,得到前景:

運(yùn)行結(jié)果
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末婆翔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子掏婶,更是在濱河造成了極大的恐慌啃奴,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雄妥,死亡現(xiàn)場離奇詭異最蕾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)老厌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進(jìn)店門瘟则,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人枝秤,你說我怎么就攤上這事醋拧。” “怎么了?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵丹壕,是天一觀的道長庆械。 經(jīng)常有香客問我,道長菌赖,這世上最難降的妖魔是什么干奢? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮盏袄,結(jié)果婚禮上忿峻,老公的妹妹穿的比我還像新娘。我一直安慰自己辕羽,他們只是感情好逛尚,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著刁愿,像睡著了一般绰寞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上铣口,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天滤钱,我揣著相機(jī)與錄音,去河邊找鬼脑题。 笑死件缸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的叔遂。 我是一名探鬼主播他炊,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼已艰!你這毒婦竟也來了痊末?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤哩掺,失蹤者是張志新(化名)和其女友劉穎凿叠,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體嚼吞,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盒件,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了誊薄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片履恩。...
    茶點(diǎn)故事閱讀 40,146評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖呢蔫,靈堂內(nèi)的尸體忽然破棺而出切心,到底是詐尸還是另有隱情飒筑,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布绽昏,位于F島的核電站协屡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏全谤。R本人自食惡果不足惜肤晓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望认然。 院中可真熱鬧补憾,春花似錦、人聲如沸卷员。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽毕骡。三九已至削饵,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間未巫,已是汗流浹背窿撬。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叙凡,地道東北人劈伴。 一個(gè)月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像狭姨,于是被迫代替她去往敵國和親宰啦。 傳聞我的和親對象是個(gè)殘疾皇子苏遥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,107評論 2 356