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) должно работать просто отлично. Но это не так

Другие вопросы по тегам