opencv 利用圖像輪廓函數填充圓環內部 圖像輪廓函數應用小例子

原圖
利用輪廓函數填充後圖像
實驗:

import cv2 as cv
import numpy as np

# 1.讀入圓環
img = cv.imread('circle_ring.jpg')
img_gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
_, thresh = cv.threshold(
    img_gray, 0, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)

# 2.使用cv.RETR_CCOMP尋找輪廓
contours, hierarchy = cv.findContours(thresh, cv.RETR_CCOMP, 2)

# 3.找到內層輪廓並填充
# hierarchy的形狀爲(1,6,4),使用np.squeeze壓縮一維數據,變成(6,4)
hierarchy = np.squeeze(hierarchy)

for i in range(len(contours)):
    # 存在父輪廓,說明是裏層
    if(hierarchy[i][3] != -1):
    	# 參數5:-1表示填充
        cv.drawContours(img, contours, i, (180, 215, 215), -1)

# 4.顯示結果
cv.imshow('fill', img)
cv.waitKey(0)
cv.destroyAllWindows()

有不懂的地方請參考:
opencv 繪製圖像輪廓
opencv cv.findContours詳解
opencv官方文檔 cv.findContours函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章