упростить получение координат из cv2.findContours - PullRequest
0 голосов
/ 06 сентября 2018

В настоящее время я работаю с opencv 3.4 и получаю контуры в виде списка координат из двоичного изображения. Мой код выглядит следующим образом:

_, contours, _ = cv2.findContours(image, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE
list_of_contours= []
for contour in contours:         
    list_of_contours.append(list(map(tuple, (coord[0] for coord in contour))))

Это работает как задумано, но мне любопытно, можно ли избежать цикла в list(map(tuple, (c[0] for c in contour))) и / или это даже разумно сделать?

1 Ответ

0 голосов
/ 07 сентября 2018

Попробуйте это:

cnts = cv2.findContours(gray,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[-2]
xcnts = np.vstack((x.reshape(-1,2) for x in cnts))
print(xcnts.shape)

Для этого изображения возвращается (698, 2) (из opencv - контуры графика на изображении ):

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...