Efektywne odejmowanie tła z OpenCV
Chcę zrobić odejmowanie tła w pliku wideo metodą OpenCV. W tej chwili jestem w stanie zrobić odejmowanie tła, ale problem polega na tym, że nie mogłem uzyskać wyjścia w trybie kolorów. Wszystkie dane wyjściowe po odjęciu tła są dostępne w trybie kolorów w skali szarości:(. Chcę uzyskać informacje o kolorze na pierwszym planie, który jest wynikiem po odjęciu tła.
Czy Mogę to zrobić techniką maskowania?? jak w poniższej procedurze, którą jestem myślę o tym.
- Capture Input --
InputFrame
(RGB) - proces
InputFrame
- Odejmij tło, zachowaj pierwszy plan w
TempFrame
(który pojawia się w skali szarości :( ) - tworzenie maski za pomocą
TempFrame
- Zastosuj utworzoną maskę do
InputFrame
- uzyskaj kolorowy pierwszy plan jako
OutFrame
Jestem zachwycony wykonywaniem maskowania za pomocą OpenCV. Jestem po prostu bardzo początkującym w OpenCV. Proszę, pomóż mi to przezwyciężyć.
Dzięki w naprzód.
2 answers
Ok, nie rozumiem, jak TempFrame (twój pierwszy plan) może być w skali szarości, jeśli używasz odejmowania tła. Musisz używać specjalnego algorytmu. Ale zakładając, że TempFrame jest w skali szarości, zrobisz to:
cv::Mat mask = tempFrame > 0.5;
cv::Mat outFrame;
capturedFrame.copyTo(outFrame, mask);
To jest kod OpenCV 2.0 powyżej. Liczba 0.5 to próg, musisz ustawić go na coś odpowiedniego. Jeśli nie używasz obrazów zmiennoprzecinkowych, prawdopodobnie ustawisz je na 128 lub coś w tym stylu. To samo jest w OpenCV 1.1 kod:
CvMat* mask = cvCreateMat(tempFrame.rows, tempFrame.cols, CV_8UC1);
cvCmpS(tempFrame, 0.5, mask);
CvMat* outFrame = cvCreateMat(capturedFrame.rows, capturedFrames.cols, CV_32FC3);
cvCopy(capturedFrame, outFrame, mask);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-17 11:02:51
Kod jest tutaj
Http://code.google.com/p/derin-deli-mavi/downloads/detail?name=denemeOpenCv23.zip&can=2&q=
Aby osiągnąć kolorowy pierwszy plan po prostu skopiuj obraz za pomocą maski pierwszoplanowej
// image.copyTo (pierwszoplanowy,pierwszoplanowy);
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-14 22:45:16