Próbuję wprowadzić przepływ optyczny w Androidzie przy użyciu openCV http://code.google.com/p/android-opencv/. Zasadniczo chcę zbudować coś takiego: http://www.youtube.com/watch?v=P_Sjn67jIJY. W każdym razie, ponieważ jestem nowy w rozwoju Androida, czy ktokolwiek może gdzieś poprowadzić, aby zbudować coś takiego na wideo? Zainstalowałem już port opencv na Androida i zbudowałem przykład cvcamera z powodzeniem używając Eclipse. Dzięki, ThanosPrzepływ optyczny Android z opencv
Odpowiedz
Zobacz ten przepływ optyczny Stanford OpenCV link. Rzeczy powinny działać w zasadzie w ten sam sposób, z tym wyjątkiem, że połączenia mogą się nieznacznie różnić z powodu problemów związanych z interfejsem C i C++ w wersjach 1.x vs. 2.x.
Wystarczy edytować przykład CVCamera i powinno być szybkie. Zrobiłem aplikację do wykrywania twarzy w czasie rzeczywistym w ciągu około godziny od rozpoczęcia pracy z CVCamera.
Odwiedź http://opencv.willowgarage.com/wiki/Android2.3.0, OpenCV 2.3.0 Release Candidate ma dobre wsparcie dla Androida. Jest w nim przepływ optyczny .. używał go
Dzięki za pomoc! Gdzie dokładnie jest próbka przepływu optycznego w opencv 2.3.0? Już go ściągnąłem i tak jak go szukałem, nie mogłem znaleźć żadnej implementacji przepływu optycznego, tylko znalazłem jak wykryć funkcje za pomocą FAST, SURF i STAR w CVCamera .. – thanos
to jest próbka prawda? musisz napisać własną przy użyciu (cv :: calcOpticalFlowPyrLK) i ponownie zbudować z NDK [http://opencv.willowgarage.com/wiki/OpenCVAndroidBinariesBuild] – shernshiou
, z drugiej strony możesz śledzić https://groups.google. com/group/android-opencv/browse_thread/thread/c0c011cb8e7f3e0C# Myślę, że ten facet skutecznie zbudował aplikację do przepływu optycznego – shernshiou
Chociaż staram się robić to samo, wydaje się, że teraz istnieje większe wsparcie dla przepływu optycznego w OpenCV4Android. Zobacz interfejsy API w org.opencv.video OpenCV Java documentation Widzę calcOpticalFlowPyrLK i calcOpticalFlowFarneback. Udało mi się przekonać calcOpticalFlowFarneback do pracy (chociaż wyniki nie sprawdziły się najlepiej, być może trzeba poprawić parametry) calcOpticalFlowPyrLK okazuje się trudny. Nie mogę przekonwertować punktów kluczowych zwróconych przez klasę FeatureDetector (MatOfKeyPoint) do punktów wymaganych przez calcOpticalFlowFarneback (MatOfPoint2f) other thread
Ten kod pomoże ci uzyskać wektor optyczny. I to będzie śledzić ich
@Override publicznego Mat onCameraFrame (CvCameraViewFrame inputFrame) {
mRgba = inputFrame.rgba();
if (mMOP2fptsPrev.rows() == 0) {
//Log.d("Baz", "First time opflow");
// first time through the loop so we need prev and this mats
// plus prev points
// get this mat
Imgproc.cvtColor(mRgba, matOpFlowThis, Imgproc.COLOR_RGBA2GRAY);
// copy that to prev mat
matOpFlowThis.copyTo(matOpFlowPrev);
// get prev corners
Imgproc.goodFeaturesToTrack(matOpFlowPrev, MOPcorners, iGFFTMax, 0.05, 20);
mMOP2fptsPrev.fromArray(MOPcorners.toArray());
// get safe copy of this corners
mMOP2fptsPrev.copyTo(mMOP2fptsSafe);
}
else
{
//Log.d("Baz", "Opflow");
// we've been through before so
// this mat is valid. Copy it to prev mat
matOpFlowThis.copyTo(matOpFlowPrev);
// get this mat
Imgproc.cvtColor(mRgba, matOpFlowThis, Imgproc.COLOR_RGBA2GRAY);
// get the corners for this mat
Imgproc.goodFeaturesToTrack(matOpFlowThis, MOPcorners, iGFFTMax, 0.05, 20);
mMOP2fptsThis.fromArray(MOPcorners.toArray());
// retrieve the corners from the prev mat
// (saves calculating them again)
mMOP2fptsSafe.copyTo(mMOP2fptsPrev);
// and save this corners for next time through
mMOP2fptsThis.copyTo(mMOP2fptsSafe);
}
/*
Parameters:
prevImg first 8-bit input image
nextImg second input image
prevPts vector of 2D points for which the flow needs to be found; point coordinates must be single-precision floating-point numbers.
nextPts output vector of 2D points (with single-precision floating-point coordinates) containing the calculated new positions of input features in the second image; when OPTFLOW_USE_INITIAL_FLOW flag is passed, the vector must have the same size as in the input.
status output status vector (of unsigned chars); each element of the vector is set to 1 if the flow for the corresponding features has been found, otherwise, it is set to 0.
err output vector of errors; each element of the vector is set to an error for the corresponding feature, type of the error measure can be set in flags parameter; if the flow wasn't found then the error is not defined (use the status parameter to find such cases).
*/
Video.calcOpticalFlowPyrLK(matOpFlowPrev, matOpFlowThis, mMOP2fptsPrev, mMOP2fptsThis, mMOBStatus, mMOFerr);
cornersPrev = mMOP2fptsPrev.toList();
cornersThis = mMOP2fptsThis.toList();
byteStatus = mMOBStatus.toList();
y = byteStatus.size() - 1;
for (x = 0; x < y; x++) {
if (byteStatus.get(x) == 1) {
pt = cornersThis.get(x);
pt2 = cornersPrev.get(x);
Core.circle(mRgba, pt, 5, colorRed, iLineThickness - 1);
Core.line(mRgba, pt, pt2, colorRed, iLineThickness);
}
}
return mRgba;
}
- 1. Android UnsatisfiedLinkError z OpenCV 2.4.2
- 2. Na czym oparty jest algorytm opencv GCGRAPH (maksymalny przepływ)?
- 3. Android - alternatywa dla OpenCV?
- 4. Android OpenCV Znajdź kontury
- 5. Przepływ aplikacji z AccountManager
- 6. Przepływ pracy z piskiem
- 7. Optyczne rozpoznawanie znaków Android z OpenCV
- 8. Android OpenCV: rysowanie zapałek z feature2d
- 9. Android OpenCV - wykryj krzywe z Houghlines
- 10. Android OpenCV Poprawianie jakości wykrywania
- 11. Przepływ master/detail z fragmentami
- 12. Przepływ danych między Android BroadcastReceiver, ContentProvider i Activity?
- 13. Dołącz OpenCV do pakietu aplikacji Android
- 14. Android Computer Vision JavaCV OpenCV FastCV porównanie
- 15. Otwórz kamerę macierzystą Android przy użyciu OpenCV
- 16. android java OpenCV 2.4 otoczka wypukła convexdefect
- 17. Android OpenCV wykorzystujące MatOfKeyPoint i feature2d wykrywają
- 18. Przepływ zleceń Gitub/EGit
- 19. Jak śledzić przepływ skryptów
- 20. Styl optyczny WPF dynamicznie tworzone MenuItem-Separator w MVVM
- 21. Przepływ pracy nhibernate + migracje
- 22. JWT odśwież przepływ tokena
- 23. ANDROID - wykrywanie koloru za pomocą openCV - jak?
- 24. Porównanie obrazów OpenCV w systemie Android
- 25. OpenCV dla przykładowych programów Android pokazujących błąd
- 26. Android + OpenCV: jak ustawić rozdzielczość kamery podczas korzystania z CameraBridgeViewBase
- 27. Jak zainstalować przepływ powietrza?
- 28. Przepływ zadań w Sharepoint kontra Przepływ pracy w systemie Windows
- 29. Używanie Grunta z Django: Najlepszy przepływ pracy
- 30. Przepływ z instalacji do rozbiórki w robocie
Ive już okazało się, że jednak mój brak wiedzy w Javie nie pozwól mi zrobić to uruchomić na Android .. = \ – thanos
To pierwszy krok. Myślałem, że już zbudowałeś przykład CVCamera ze źródła i zainstalowałeś go. Zauważ, że to bardzo różni się od pobierania pliku .apk i grania z nim. – peakxu
Zbudowałem już CVCamera używając powłoki cybina basha i otwieram ją za pomocą eclipse bez żadnych błędów. Zmieniłem również rozdzielczość, aby szybciej uruchomić wykrywanie funkcji, które ma CVCamera – thanos