Obecnie pracuję nad projektem przetwarzania obrazu. Używam Opencv2.3.1 z VC++. Napisałem kod w taki sposób, że obraz wejściowy jest filtrowany tylko na kolor niebieski i konwertowany na obraz binarny. Obraz binarny ma kilka małych obiektów, których nie chcę. Chciałem wyeliminować te małe obiekty, więc użyłem metody openCV do wykrywania konturów w obrazie binarnym. ale problem polega na tym, że nie mogę wyeliminować małych obiektów w obrazie wyjściowym. Użyłem funkcji cvContourArea()
, ale nie działałem poprawnie ..., funkcja erodująca również nie działała poprawnie.Kontury opencv: Jak wyeliminować małe kontury na obrazie binarnym
Więc proszę mi ktoś pomóc z tym problemem ..
binarny obraz który uzyskałam:
Wynik/wyjścia obrazu, które chcę w celu uzyskania:
Dzięki za sugestię, ale nie wiem, jak napisać kod, aby znaleźć obszar każdego wykrytego plamki/konturu. Kod, który napisałem, znajduje się pod poniższym linkiem. Czy możesz go poprawić i odpowiedzieć. : http://textuploader.com/?p=6&id=YwRl. –
oh! Właśnie zapomniałem, nagłówek i plik cpp dla cvutility można znaleźć w tych linkach: http: //textuploader.com/? P = 6 & id = Dtnvj http://textuploader.com/?p=6&id=TSlRQ Proszę uwzględnić je w katalog źródłowy i dołącz ścieżki. –
Nie jestem zbyt obeznany z C api, ale wygląda na to, że właśnie obliczasz obszar pierwszego konturu. Musisz wykonać iterację poprzez kontury i narysować tylko te z obszarem> pewnym progiem. Jeśli próbujesz znaleźć ten obiekt, powinieneś narysować kontur z największym obszarem. – fferen