2017-06-21 50 views
1

我運行形態命中和設置爲0的內核中心元素錯過(無所謂):opencv的命中和未命中行爲

cv2.morphologyEx(np.asarray([[0, 255, 0], [0, 0, 0], [0, 255, 0]], dtype=np.uint8), cv2.MORPH_HITMISS, np.asarray([[0, 1, 0], [0, 0, 0], [0, 1, 0]], dtype=np.int8)) 

我越來越: [0,0,0 ],[0,0,0],[0,0,0]]

雖然我期待得到: [[0,0,0],[0,255,0],[0, 0,0]]

請解釋此行爲。

+1

我甚至不知道這是在OpenCV中實現的。涼。儘管如此,這絕對是出乎意料的行爲我將內核改爲了[[0,1,0],[0,0,0],[0,1,-1]]',並獲得了正確的翻轉。 –

+0

是的,我知道。問題是什麼時候沒有-1。看到我下面提交的錯誤 – eyaler

+1

@AlexanderReynolds有一個[條件](https://github.com/opencv/opencv/blob/master/modules/imgproc/src/morph.cpp#L2060)處理這種情況,當[第二個結構化元素](http://docs.opencv.org/trunk/db/d06/tutorial_hitOrMiss.html)全部爲零,並且它們使用輸入圖像而不是補充的快捷方式。應該是一個簡單的解決方法,只是在'if'之前移動L2064-2065。 –

回答