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