Что
Вы хотите использовать cv2.findContours()
с включенной иерархией. Попробуйте retr_ccomp.
Почему
Это попытается найти области, которые можно заполнить. Или, точнее, отверстия в замкнутых контурах. Так как фильтр Собеля возвратил мягкие края, мы хотим обнаружить замкнутые контуры среди мягких краев, которые будут просто самими краями. Отверстия — это объекты.
Как
Вы получите как contours
, список точек, так и hierarchy
, список кортежей. Если иерархия[i][3] положительна, то у контуров[i] есть родитель и, следовательно, это дыра, поскольку ccomp допускает только 2 уровня.
Я должен отметить, что мы работаем над проблемой сегментации изображений уже 50 лет, и ни у кого нет отличного решения. Вы обнаружите, что этот подход часто ненадежен для произвольных сцен.
person
Jacob Panikulam
schedule
17.10.2016