Podczas pobierania konturów z obrazu, powinieneś uzyskać 2 kontury na blob - jeden wewnętrzny i jeden zewnętrzny. Rozważ krąg poniżej - ponieważ koło jest linią o szerokości piksela większej niż jedna, powinieneś być w stanie znaleźć dwa kontury na obrazie - jeden z wewnętrznej części koła i jeden z zewnętrznej.Znaleźć kontury w OpenCV?
Korzystając z OpenCV, chcę odzyskać kontury INNER. Jednak kiedy używam findContours(), wydaje mi się, że uzyskuję tylko zewnętrzne kontury. W jaki sposób odzyskać wewnętrzne kontury obiektu typu blob za pomocą OpenCV?
Używam C++ API, nie C, dlatego sugeruję tylko funkcje korzystające z API C++. (to znaczy findContours() zamiast cvFindContours())
Dzięki.
Czy możesz pokazać nam kod? – SSteve
Nie mam żadnego unikalnego kodu. Po prostu mam Matę, którą pobieram z kamery. Uruchomę na nim detektor krawędzi, a następnie znajduję kontury za pomocą findContours(). Wszystkie znalezione kontury są przechowywane w wektorze>. To w zasadzie wszystko, co mam, więc nie ma sensu umieszczać prawdziwego kodu - to tylko tradycyjny proces znajdowania konturów. –
fdh
Pracowałem trochę z konturami, choć moje zainteresowanie było tylko zewnętrznymi konturami. Próbowałem kolorować kontur, z "drawContours()". Który wyszukuje coś w rodzaju hierachy. Próbka na "drawContours()", której użyłem, nie pokolorowała wewnętrznych konturów. Próbuję się tu dostać, jest to, że prawdopodobnie musisz użyć hierarchii z "findContours()", aby je posortować. (Powodem, dla którego nie zamieszczam odpowiedzi jest to, że moja wiedza na temat tej hierachy jest ograniczona, nie chciałbym wprowadzać w błąd w tej sprawie.) Przeprowadziłem trochę testów na tych i mogłem wyjaśnić moje zrozumienie do tej pory, jeśli żądasz.) – Sonaten