2013-04-12 13 views
12

Próbuję zaimplementować coś takiego: http://www.youtube.com/watch?v=zjxWpKCQqJc na Androidzie.Wykrywanie obiektów OpenCV z Androidem

Oto mój kod:

public Mat onCameraFrame(CvCameraViewFrame inputFrame) { 
    Mat novo = new Mat(); 
    Mat resp = new Mat(); 
    Mat homer = new Mat(); 

    //resp = inputFrame.gray(); 
    novo = inputFrame.gray(); 

    Mat lido = new Mat(); 
    try { 
     lido = Utils.loadResource(this, R.drawable.homer); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    Imgproc.cvtColor(lido, homer, Imgproc.COLOR_RGB2GRAY); 

    FeatureDetector surf = FeatureDetector.create(FeatureDetector.FAST); 

    MatOfKeyPoint keypointsHomer = new MatOfKeyPoint(); 
    MatOfKeyPoint keypoints = new MatOfKeyPoint(); 

    surf.detect(homer, keypointsHomer); 
    surf.detect(novo, keypoints); 

    DescriptorExtractor SurfExtractor = DescriptorExtractor.create(FeatureDetector.SURF); 

    Mat descriptors = new Mat(); 
    Mat homerDescriptors = new Mat(); 

    SurfExtractor.compute(novo, keypoints, descriptors); 
    SurfExtractor.compute(homer, keypointsHomer, homerDescriptors); 

    DescriptorMatcher m = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE); 
    MatOfDMatch matches = new MatOfDMatch(); 

    m.match(descriptors, homerDescriptors, matches); 

    Features2d.drawMatches(novo, keypoints, homer, keypointsHomer, matches, resp); 

    return resp; 
} 

i mam następujący błąd: https://dl.dropboxusercontent.com/u/2345114/error_android.png

Jeśli próbuję wyciągnąć keypoints tak:

Features2d.drawKeypoints(novo, keypoints, resp); 
Features2d.drawKeypoints(homer, keypointsHomer, resp); 

Zarówno działa dobrze! Co robię źle?

Odpowiedz

3

W końcu to skończę!

Oto link z ostatecznym wynikiem.

Simpson Detector (OpenCV)

Mam nadzieję, że to pomaga w jakiś sposób, w Google Play można zobaczyć więcej szczegółów o tym projekcie i pobrać kod źródłowy. Proszę wysłać mi e-mail.


Zaokrągliłem problem w inny sposób. Przypuszczam, że Feature2d.drawMatches nie działa na Androidzie. Prawdopodobnie działa tylko z JVM i komponentami, które nie istnieją w systemie Android. Jeśli ktokolwiek może potwierdzić, jestem wdzięczny.

Google usunął aplikację i nie powiedział dlaczego! = ( ale kod źródłowy jest dostępny wraz z apk na moim miejscu

quintao.info


Wynik: https://www.youtube.com/watch?v=h2KHje-Pf10

Źródło: github.com/raphaelquintao/SimpsonDetector

Mam nadzieję, że pomogłem

+4

Jeśli samodzielnie rozwiązałeś problem, czy pamiętasz, jakie rozwiązanie był? Ponadto: Twój link już nie działa. Wygląda na to, że Twoja aplikacja nie jest już dostępna w Google Play. – pocmo

+1

Zrobiłem inaczej. Nie wiem, dlaczego aplikacja została usunięta z Google Play, ale była. Na mojej stronie znajduje się link do kodu źródłowego i dołączony jest apk. http://quintao.info Mam nadzieję, że będę pomocny! = D –

+0

Hej, dobra robota, którą tam zrobiłeś! Chciałbym cię zapytać, jak udało ci się odróżnić różnych ludzi z Simpson? Próbuję zrobić coś takiego, jak twój detektor, ale na części samochodowe. Muszę odróżnić kierownicę od koła samochodowego. Czy możesz mi coś zasugerować? – definera

Powiązane problemy