Как прочитать результат cv2.findContours? - PullRequest
0 голосов
/ 10 июля 2020

У меня есть двоичная 2D-матрица b с формой (340,490) и на нее наложен cv2.findContours(b,1,2). Результатом является трехмерный массив с формой (6, 2, 1), например [[90,3],[5,60],[90, 110],[5,135],[3,200],[3,3]]. Я не могу это прочитать. Подал заявку cv2.drawContours(b,contours, -1, (0,0,255), 3) Сработало префектом. Так как у меня на оригинале куча шумных б. Не знаю, почему это удалось исправить только по 12 числу. что означают эти числа?

1 Ответ

1 голос
/ 10 июля 2020

Функция cv2.drawContours () возвращает 2 значения:

Первое в «Контурах», а второе - «Иерархия».

Контуры содержат координаты граничных точек каждого контур обнаружен на изображении.

Чтобы найти количество контуров, используйте:

len(Contours)

Это даст количество контуров, обнаруженных на изображении.

Теперь каждый элемент в «Контурах» будет иметь следующий тип:

Contours[i] = [[[x1, y1]],
               [[x2, y2]],
               [[x3, y3]],
               [[x4, y4]],
               [[x5, y5]],
               ...
               [[xn, yn]]]

где x и y - координаты граничной точки этого контура на изображении, а n - общее количество граничных точек этого контура. .

Чтобы узнать о возвращаемом значении «Иерархия», перейдите по этой ссылке .

...