查找輪廓(cv2.findCountours函數)


1.輸入為二值圖像,黑色為背景,白色為目標

2.該函數會修改原圖像,因此若想保留原圖像在,則需拷貝一份,在拷貝圖里修改。

一.查找輪廓

cv2.findContours()

   三個輸入參數:輸入圖像(二值圖像),輪廓檢索方式,輪廓近似方法

1.輪廓檢索方式

cv2.RETR_EXTERNAL 只檢測外輪廓
cv2.RETR_LIST 檢測的輪廓不建立等級關系
cv2.RETR_CCOMP 建立兩個等級的輪廓,上面一層為外邊界,里面一層為內孔的邊界信息
cv2.RETR_TREE 建立一個等級樹結構的輪廓

2.輪廓近似辦法

cv2.CHAIN_APPROX_NONE 存儲所有邊界點
cv2.CHAIN_APPROX_SIMPLE 壓縮垂直、水平、對角方向,只保留端點
cv2.CHAIN_APPROX_TX89_L1 使用teh-Chini近似算法
cv2.CHAIN_APPROX_TC89_KCOS 使用teh-Chini近似算法

 

    三個返回值:圖像,輪廓,輪廓的層析結構

 

 

二.繪制輪廓

cv2.drawContours()

    五個輸入參數:原始圖像,輪廓(python列表),輪廓的索引(當設置為-1時,繪制所有輪廓),畫筆顏色,畫筆大小

   一個返回值:返回繪制了輪廓的圖像

代碼:

import cv2   
img = cv2.imread('D:\\test\\contour.jpg')    
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)    
ret, binary = cv2.threshold(gray,127,255,cv2.THRESH_BINARY)    
    
binary , contours, hierarchy = cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)    # 輸出為三個參數  
cv2.drawContours(img,contours,-1,(0,0,255),3)    
    
cv2.imshow("img", img)    
cv2.waitKey(0)   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM