2012-02-19 13 views
6

Jak widać na obrazku, chciałbym porównać te kontury.OpenCV || podobieństwo konturu

contours

muszę mój program OpenCV powrotu TRUE gdy te kontury są porównywane ze sobą. Wszystkie one wyglądają tak samo, ale jak widać, nie są dokładnie takie same.

Rezultatem tutaj jest to, co powróciłem z funkcji findContours.

Poszukuję więc odpowiedniego podejścia do podobieństwa dla tych konturów.

Każda pomoc będzie niesamowita.

Dziękuję bardzo z góry.

Odpowiedz

5

Spójrz na cvMatchShapes() (który wcześniej był nazywany cvMatchContours()).

+0

Dzięki! Zajmę się tym od razu. Myślałem o używaniu metody K Nearest Neigbour, ale nie jestem pewien, jak ją poprawnie zaimplementować w OpenCV. –

+0

Z przyjemnością. Zrobione :-) –

+0

Adi, czy możesz mi powiedzieć, jak używać cvMatchShapes. Kiedy próbuję uruchomić go z konturami wypełnionymi wektorem > Otrzymuję: Błąd OpenCV: Asercja nie powiodła się. Z góry dziękuję. –

5

Aby użyć funkcji matchShapes() należy przekazać vector<Point>, vector<Point> jako argumenty. Więc nie kontury kontenery tak jak ty, ale konkretne kontury z niego. Kształty, które próbujesz porównać, powinny być jednym konturem.

+0

Dzięki człowieku! Głupi błąd przeze mnie :-) Jest to wektor zamiast wektora >. –