Tworzę program, który śledzi funkcje z ORB z OpenCV (2.43) Śledziłem this tutorial i użyłem porady from here.FindHV's findHomography daje nonsensowne wyniki
Moim celem jest śledzenie obiektu w materiale wideo (twarz) i narysowanie wokół niego prostokąta.
Mój program znajduje kluczowe punkty i pasuje do nich poprawnie, ale kiedy spróbuję użyć findHomography
+ perspectiveTransform
, aby znaleźć nowe rogi obrazu, zwykle zwraca niektóre wartości typu nonsens (choć czasami zwraca prawidłową homografię).
Oto przykład obrazku:
Oto odpowiadające problematyczna część:
Mat H = findHomography(obj, scene, CV_RANSAC);
//-- Get the corners from the image_1 (the object to be "detected")
std::vector<Point2f> obj_corners(4);
obj_corners[0] = cvPoint(0,0); obj_corners[1] = cvPoint(img_object.cols, 0);
obj_corners[2] = cvPoint(img_object.cols, img_object.rows); obj_corners[3] = cvPoint(0, img_object.rows);
std::vector<Point2f> scene_corners(4);
perspectiveTransform(obj_corners, scene_corners, H);
//-- Draw lines between the corners (the mapped object in the scene - image_2)
line(img_matches, scene_corners[0] + Point2f(img_object.cols, 0), scene_corners[1] + Point2f(img_object.cols, 0), Scalar(0, 255, 0), 4);
line(img_matches, scene_corners[1] + Point2f(img_object.cols, 0), scene_corners[2] + Point2f(img_object.cols, 0), Scalar(0, 255, 0), 4);
line(img_matches, scene_corners[2] + Point2f(img_object.cols, 0), scene_corners[3] + Point2f(img_object.cols, 0), Scalar(0, 255, 0), 4);
line(img_matches, scene_corners[3] + Point2f(img_object.cols, 0), scene_corners[0] + Point2f(img_object.cols, 0), Scalar(0, 255, 0), 4);
Reszta kodu jest praktycznie taka sama jak w linkach ja usług. Wykreślone linie wydają się kompletnie losowe, moim celem jest uzyskanie minimalnego prostokąta obiektu źródłowego w nowej scenie, więc jeśli istnieje alternatywa dla używania homografii, która również działa.
P.S. Obraz źródłowy do śledzenia to region skopiowany z wejścia wideo, a następnie śledzony w nowych obrazach z tego wejścia, czy ma to znaczenie?
Podanie dodatkowych informacji, np. obrazy z wynikami byłyby użyteczne. –
cóż, to jest coś jak tutaj: http://dl.dropbox.com/u/5481096/Clipboard02.jpg. – user2184001
Edytowałem obraz na twoje pytanie. Jeśli chcesz podać więcej informacji w przyszłości, najlepiej edytuj swoje pytanie, aby łatwiej było je zobaczyć. –