connectedComponents в opencv (Python) не заботится о подключении?
У меня проблема с connectedComponents
(или же connectedComponentsWithStats
), которая является функцией opencv (3.3.0) в Python (2.7.12). Простой код следующий:
import numpy as np
import cv2
img = np.zeros((4,4), dtype = np.uint8)
img[1,1] = 255
img[2,2] = 255
output = cv2.connectedComponents(img, 4)
print output[1]
Возвращается
[[0 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 0]]
что странно, так как я попросил подключенные компоненты с возможностью подключения 4 (не 8). Таким образом, два пикселя в (1, 1)
а также (2, 2)
не связаны и должны давать два разных подключенных компонента, например, с метками 1 и 2.
Я сделал ошибку?
1 ответ
Решение
Замена
output = cv2.connectedComponents(img, 4)
от
output = cv2.connectedComponents(img, connectivity=4)
дам тебе
[[0 0 0 0]
[0 1 0 0]
[0 0 2 0]
[0 0 0 0]]
В качестве альтернативы укажите все 3 аргумента
output = cv2.connectedComponents(img, 4, cv2.CV_32S)
Я не на 100% почему. Я оставлю это экспертам Python там. Из моего понимания cv2.connectedComponents(img, 4)
должно работать просто отлично. Но это не так