Skocz do zawartości

[Programowanie] OpenCV - Wykrywanie obiektów


Pomocna odpowiedź

Napisano

W tej części zajmiemy się zagadnieniem wykrywania obiektów. Biblioteka OpenCV oferuje szereg narzędzi, które ułatwią nam to zadanie. Program będzie pobierał klatki z kamery internetowej, następnie będzie na bieżąco przetwarzał obraz, oraz zwracał współrzędne środka prostokąta otaczającego największy obiekt o ustalonym przez nas kolorze.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

camera.thumb.png.75ef9267cac784c6bad1977e6b422799.png

  • Lubię! 1
Żeby zrozumieć sprawę jeszcze lepiej popatrzmy jak wygląda poniższy obrazek w wersji hsv.

IMG_5068af6009ff73980.png

Hmm, tutaj jest coś nie tak. Przy zmianie sposobu reprezentacji koloru obraz generalnie się nie zmienia (bądź zmiany są minimalne). U Ciebie nie zmienił się tylko sposób reprezentacji ale doszedł jakiś nieznany filtr.

Wszystko jest jak najbardziej OK. Funkcja konwertująca działa dobrze. Natomiast jeśli chodzi o to, że obrazki się różnią, no cóż na szybko mogę wysnuć wniosek, że skoro klasa Mat nie przechowuje w swoim wnętrzu informacji o modelu barw, w którym jest reprezentowany dany obrazek co wynika dokumentacji

http://www710.univ-lyon1.fr/~eguillou/documentation/opencv2/classcv_1_1_mat.html

to po prostu informacje takie nie są dostępne w funkcji imshow, gdyż ich przecież do niej w żaden niezależny sposób nie przekazujemy, a więc funkcja po prostu wyświetla obrazek tak jakby był w standardowym modelu barw. Oczywiście mogę się mylić, gdyż są to tylko moje przypuszczenia. Nie mam jednak najmniejszych wątpliwości co do tego, że konwersja działa poprawnie, gdyż jest realizowana w całości przez funkcję biblioteczną.

Generalnie gdyby przy zmianie modelu następowała zmiana barw, to nie miało by to większego sensu. Dany kolor można przedstawić za pomocą różnych wartości w zależności od modelu. Najpopularniejsze modele, to:

* bazujące na kolorach składowych, między innymi: RGB, CMY, CMYK

* bazujące na parametrach koloru, między innymi: HSV, HSL, Lab

Niektóre kolory mogą istnieć tylko w niektórych modelach i są poza możliwym zakresem w innych, jednakże za pomocą prostych wzorów i w obsługiwanym zakresie można się płynnie przemieszczać między reprezentacją tego samego koloru.

Dlatego zaprezentowana tutaj zmiana musi tyczyć się czegoś innego. Możliwe, że jest to rzutowanie HSV na RGB (BGR) bez przeliczania. Tylko czy takie rzutowanie ma jakiś sens to już temat do głębszej dysputy. Jeśli zakładamy, że R=H, G=S i B=V to zwyczajnie wizualizujemy kolorem czerwonym odcień, zielonym nasycenie, a niebieskim jasność. No może ma to sens.

Ostatnio dowiedziałem się, że rzutwanie float na int i z powrotem też ma sens, co generalnie mocno mnie zaskoczyło.

No nic, tak chciałem zasygnalizować, że coś mi tu nie pasuje 🙂

  • 2 lat(a) później...

Cześć jak wygląda implementacja tej biblioteki na uk ? np cortex - m3 z zestawu zl27ARM ?Jak uk będzie sobie radził ?

  • 1 rok później...

Cześć, mam kłopot z programem po skompilowaniu program się wyłącza z błędem: The program '[7736] openCV_test.exe' has exited with code -1073740777 (0xc0000417). Co ciekawe gdy zakryję kamerkę palcem (czarny ekran) program działa.

  • 3 tygodnie później...
  • 2 tygodnie później...

Gdy odpalam program do wykrywania kolorowych obiektów, to wyskakuje mi taki błąd:

Debug Assertion Failed!

 

Program: C:\Windows\system32\MSVCP110D.dll

File: c:\...\vc\include\vector

Line: 1140

 

Expression: vector subscript out of range

Jednak, gdy zamienię waitKey(20) na np. waitKey(1000) to wtedy wszystko działa. Co więcej, zauważyłem, że błąd pojawia się gdy używam funkcji inRange.

Natomiast w ostatnim programie po odpaleniu wyskakuje taki błąd:

Unhandled exception at 0x0FB7FD8A (opencv_imgproc249d.dll) in ConsoleApplication3.exe: 0xC0000005: Access violation reading location 0xCDCDCDCD.

Ktoś wie jak można to naprawić?

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...