Обнаружение объектов Android OpenCV

Я пытаюсь реализовать что-то вроде этого: http://www.youtube.com/watch?v=zjxWpKCQqJc на Android.

Здесь мой код:

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;
}

И я получил следующую ошибку: https://dl.dropboxusercontent.com/u/2345114/error_android.png

Если я попытаюсь нарисовать ключевые точки следующим образом:

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

Оба отлично работают! Что я делаю неправильно?

Ответ 1

Я наконец закончу это!

Вот ссылка с окончательным результатом.

Simpson Detector (OpenCV)

Надеюсь, это поможет вам каким-то образом, в Google Play вы сможете увидеть более подробную информацию об этом проекте и загрузить исходный код. Не стесняйтесь присылать мне электронное письмо.


Я обошел проблему по-другому. Я думаю, что функции2d.drawMatches не работают на Android. Вероятно, работает только с JVM и с компонентами, которых нет в android. Если кто-нибудь может подтвердить, что я благодарен.

Google удалил приложение и не сказал почему! знак равно Но исходный код доступен вместе с apk на моем сайте!

quintao.info


Результат: https://www.youtube.com/watch?v=h2KHje-Pf10

Источник: github.com/raphaelquintao/SimpsonDetector

Надеюсь, я помог!