0
如何在python中使用open cv實現連接組件標籤? this is an image example 我需要連成分標籤的黑白圖像python中的連接組件標籤
如何在python中使用open cv實現連接組件標籤? this is an image example 我需要連成分標籤的黑白圖像python中的連接組件標籤
在OpenCV connectedComponents()
docs對不同的對象不提Python的,但它實際上是執行。參見例如this SO question。
該函數調用很簡單:retval, labels = cv2.connectedComponents(img)
,您可以指定參數connectivity
來檢查4-或8-路(默認)連接。不同之處在於,4路連接僅檢查頂部,底部,左側和右側像素並查看它們是否連接; 8路檢查八個相鄰像素中的任何一個是否連接。如果你有對角線連接(就像你在這裏做的那樣),你應該指定connectivity=8
。請注意,它只是爲每個組件編號併爲它們提供從0開始的遞增整數標籤。因此所有零連接,所有零連接等。如果要將它們可視化,則可以將這些編號映射到特定顏色。我喜歡將它們映射到不同的色調,將它們組合成HSV圖像,然後轉換爲BGR進行顯示。這裏是你的形象的例子:
import cv2
import numpy as np
img = cv2.imread('eGaIy.jpg', 0)
img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)[1] # ensure binary
ret, labels = cv2.connectedComponents(img)
# Map component labels to hue val
label_hue = np.uint8(179*labels/np.max(labels))
blank_ch = 255*np.ones_like(label_hue)
labeled_img = cv2.merge([label_hue, blank_ch, blank_ch])
# cvt to BGR for display
labeled_img = cv2.cvtColor(labeled_img, cv2.COLOR_HSV2BGR)
# set bg label to black
labeled_img[label_hue==0] = 0
cv2.imshow('labeled.png', labeled_img)
cv2.waitKey()
感謝亞歷山大,我已經使用cv2.connectedComponents,但我發現eror這樣, AttributeError的: '模塊' 對象有沒有屬性 'connectedComponents' –
啊,那麼你很可能在一個較舊版本的OpenCV中綁定尚未移植。你使用的是什麼版本的OpenCV?如果你不能升級,那麼考慮另一個類似'scikit-image'的庫; [這裏是一個例子](http://www.scipy-lectures.org/packages/scikit-image/auto_examples/plot_labels.html)。或者,您可以檢測輪廓並使用它來標記圖像。 –
我的opencv版本'2.4.13'。 非常感謝,非常有幫助,我認爲我的opencv需要升級 –