Я использую OpenCV 2.4.8 в python для сегментирования изображений и поиска объектов. Я хочу использовать findContours для перечисления объектов и анализа их области, формы и т. Д. Но если у меня есть два объекта, которые разделены только тонкой (1 px шириной) диагональной линией или даже диагонально касаются по углам, они будут распознаны как один объект.Python openCV findContours ложно связывает соседние объекты
Это изображение иллюстрирует проблему:
Есть, очевидно, два объекта, но они признаны как единое целое.
В Matlab для решения этой проблемы можно указать параметр подключения (окрестности 4 или 8). Можно ли это сделать и с помощью opencv? Может быть, используя иерархию контуров или какую-то другую работу?
Я знаю, что я мог бы использовать морфологическую эрозию или открытие для разделения двух объектов, но это может вызвать проблемы в других частях моего изображения. Я уже пробовал это.
В настоящее время OpenCV 3.0 имеет методы 'connectedComponents' и' connectedComponentsWithStats', которые позволяют выбирать между 4- и 8-соседними подключениями. Если изменение версий является опцией, см. Мой ответ [здесь] (http://stackoverflow.com/questions/9018016/how-to-compare-two-colors) – beaker