OpenCV: получить только черные контуры в двоичном изображении с помощью findContours - PullRequest
0 голосов
/ 21 сентября 2019

Я новичок в OpenCV, поэтому, пожалуйста, потерпите меня.

В настоящее время я получаю контуры как белых, так и черных вещей в моем двоичном изображении.Я только хочу черные контуры, хотя (так, где значение равно 0).Есть ли какие-то настройки, которые я могу настроить, чтобы получить этот результат?Или я могу их отфильтровать?

Также: cv.findContours () возвращает как контуры, так и иерархию.Для чего используется иерархия?

И последнее: контуры, по-видимому, состоят из массива с несколькими координатами.Что они имеют в виду?

1 Ответ

0 голосов
/ 21 сентября 2019

cv2.findContours находит все контуры вашего изображения.Некоторые являются внутренними, некоторые являются внешними, некоторые вложены в другие контуры.

По этой причине метод возвращает несколько координат.Иерархия - это вектор, который содержит информацию об этих различных уровнях извлеченных контуров (внешний, вложенный, внутренний и т. Д.).

Однако вы можете установить retrievalMode для фильтрации контуров на основеИерархия.

Ни при каких обстоятельствах они не содержат информацию о цвете, поэтому вам необходимо каким-то образом их фильтровать.

Я мог бы добавить, что разумная вещь, которую вы можете сделать, это отфильтровать изображение перед тем, как получить контуры,так что вы найдете контуры только в маске, которую вы создаете, в зависимости от цвета или диапазона цветов по вашему выбору (см. cv2.inRange)

...