輪廓(contours)
輪廓,簡單說輪廓就是一些列點相連組成形狀、它們擁有同樣的顏色、輪廓發現在圖像的對象分析、對象檢測等方面是非常有用的工具,在OpenCV中使用輪廓發現相關函數時候要求輸入圖像是二值圖像,這樣便於輪廓提取、邊緣提取等操作。
cv2.imread(filename[, flags])
- flags 有3種不同讀取圖片的方法
CV_LOAD_IMAGE_ANYDEPTH 如果有設置,則當輸入具有相應的深度時返回16bit/32bit圖像,否則將轉換為8bite
CV_LOAD_IMAGE_COLOR 如果有設置,將圖像轉為一種顏色,也可使用-1(不變)或0(灰度)或1(顏色)來表示
CV_LOAD_IMAGE_GRAYSCALE 如果有設置,將圖像轉為灰度圖像
cv2.findContours(image, mode, method[, contours[, hierarchy[, offset ]]])
返回兩個值:contours:hierarchy,一個是輪廓本身,還有一個是每條輪廓對應的屬性
- image 輸入/輸出的二值圖像
- mode 返回輪廓的結構、有3種分別是
cv2.RETR_List(檢測的輪廓不建立等級關係)、
cv2.RETR_Tree(建立一個等級樹結構的輪廓)、
cv2.RETR_External(只檢測外輪廓)
- method 輪廓點的編碼方式,基本是基於鏈式編碼,有3種分別是
CV_CHAIN_APPROX_NONE 會儲存所有邊界的點
CV_CHAIN_APPROX_SIMPLE 它刪除了所有冗餘的點並壓縮輪廓,保留端點的點
CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS
- contours 返回的輪廓集合
- hieracrchy 返回的輪廓層次關係
- offset 點是否有位移
※由於版本如果是使用(3.2.0.7)以上時cv2.findContours返回值變成3個
第一個引數是源影象、第二個引數是輪廓檢索模式,第三個引數是輪廓逼近方法
_,ctrs,hier=cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
or
aa,ctrs,hier=cv2.findContours(binary,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
ret,out=cv2.threshold(image, thresh, max, method)
※threshold只能處理灰階影像
- image 輸入影像
- thresh 參數為最小門檻值設定
- max 參數為最大門檻值設定
- method 參數為使用Threshold的演算類型,二化值有5種模式
cv2.THRESH_BINARY(黑白二值)
cv2.THRESH_BINARY_INV(黑白二值反轉)
cv2.THRESH_TRUNC (得到的圖像為多像素值)
cv2.THRESH_TOZERO (將小於閾值的灰度值設為0,大於閾值的值保持不變。)
cv2.THRESH_TOZERO_INV (將大於閾值的灰度值設為0,小於閾值的值保持不變。)
cv2.drawContours(image, contours, contourIdx, color[, thickness[, lineType[, hierarchy[, maxLevel[, offset]]]]])
- image 目標圖片
- contours 所有輸入的輪廓,每個輪廓都儲存為點向量
- contourIdx 指定要繪製輪廓的參數(list中的哪條輪廓),如果為負數,則會繪製所有輪廓
- thickness 繪製輪廓的線的粗細,如果為負數(ex:thickness=CV_FILLED ),則繪製輪廓內部(填充模式)
- linr Type 線路相連,用於兩點相連用(可以參考line())
- hierarchy 有關階層,僅當你只想繪製一些輪廓時才需要使用(可以參考maxLevel)
- maxLevel 繪製輪廓有關,
如果為0,only the specified contour is drawn
如過為1,the function draws the contour(s) and all the nested contours
如果為2,he function draws the contours, all the nested contours, all the nested-to-nested contours 等等 ,僅當存在可用的hierarchy才要考慮此參數
- offset 可選用的輪廓偏移參數,將所繪製的輪廓移動到指定的(ex:offset=(dx,dy))
參考資料: