15.OpenCV的影像輪廓——查找輪廓
文章目錄
- 前言
- 一、查找輪廓
- 1、cv2.findContours()函式回傳結果
- 2、輪廓層次
- 3、輪廓的檢索模式
- 4、輪廓的近似方法
- 二、OpenCV-Python資源下載
- 總結
前言
??影像輪廓是指由位于邊緣、連續的、具有相同顏色和強度的點構成的曲線,它可以用于形狀分析以及物件檢測和識別,
一、查找輪廓
??cv2.findContours()函式用于從二值影像中查找影像輪廓,其基本格式如下:
contours, hierarchy = cv2.findContours(image, mode, method[, offset])
contours位回傳的輪廓
hierarchy位回傳的輪廓層次結構
image為原影像
mode為輪廓的檢索模式
method為輪廓的近似方法
offset為每個輪廓點移動的可選偏移量
img = cv2.imread('shapes.jpg')
cv2.imshow('shapes', img)
img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv2.imshow('img_gray', img_gray)
ret, thresh = cv2.threshold(img_gray, 125, 255, cv2.THRESH_BINARY)
cv2.imshow('thresh', thresh)
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_TC89_L1)
img1 = np.zeros(img.shape, np.uint8) + 255
cv2.polylines(img1, [contours[0]], True, (255,0,0), 2)
img2 = np.zeros(img.shape, np.uint8) + 255
cv2.polylines(img2, [contours[1]], True, (255,0,0), 2)
img3 = np.zeros(img.shape, np.uint8) + 255
cv2.polylines(img3, [contours[2]], True, (255,0,0), 2)
cv2.imshow('img1', img1)
cv2.imshow('img2', img2)
cv2.imshow('img3', img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

print('輪廓:',contours)
print('輪廓型別:',type(contours))
print('輪廓個數:',len(contours))
print('層次:',hierarchy)
print('層次型別:',type(hierarchy))

1、cv2.findContours()函式回傳結果
??cv2.findContours()函式回傳一個list物件,保存了輪廓陣列,輪廓陣列的每一個元素都是一個表示輪廓的array物件,回傳的輪廓層次是一個numpy.ndarray物件,
2、輪廓層次
??根據輪廓的嵌套關系,可將輪廓之間的層次關系分為父級和子級,外部的輪廓為父級,內部的輪廓為子級,
??cv2.findContours()函式回傳的輪廓層次中,numpy.ndarray物件中的每一個元素表示的層次關系為:[下一個輪廓 前一個輪廓 第一個子級輪廓 父級輪廓],例如[-1 0 2 -1]中,-1表示不存在對應的輪廓,前一個輪廓在輪廓陣列中的序號為0,第一個子級輪廓在輪廓陣列中的序號為2.
3、輪廓的檢索模式
| 檢索模式mode | 說明 |
|---|---|
| cv2.RETR_LIST | 僅檢索所有輪廓,不創建任何父子關系 |
| cv2.RETR_EXTERNAL | 僅檢索所有外部輪廓,不包含子級輪廓 |
| cv2.RETR_CCOMP | 檢索所有輪廓并將它們排列為2級層次結構,所有外輪廓為1級,所有子級輪廓為2級 |
| cv2.RETR_TREE | 檢索所有輪廓不創建完整的層次串列,如父級、子級、孫子級等 |
4、輪廓的近似方法
| 近似方法method | 說明 |
|---|---|
| cv2.CHAIN_APPROX_NONE | 存盤所有輪廓點,輪廓的任意兩個相鄰點是水平、垂直或對角線上的鄰居 |
| cv2.CHAIN_APPROX_SIMPLE | 只保存水平、垂直和對角線的端點 |
| cv2.CHAIN_APPROX_TC89_L1 | 應用Teh-Chin鏈逼近演算法中的一種確定輪廓點 |
二、OpenCV-Python資源下載
OpenCV-Python測驗用圖片、中文官方檔案、opencv-4.5.4原始碼
總結
??以上內容介紹了OpenCV-Python的查找輪廓操作,有關Python、資料科學、人工智能等文章后續會不定期發布,請大家多多關注,一鍵三連喲(●’?’●),
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/382981.html
標籤:其他
