Android OpenCV对象检测

Android OpenCV对象检测,android,opencv,image-processing,Android,Opencv,Image Processing,我试图实现这样的东西:在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 Ma

我试图实现这样的东西:在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;
}
我得到了以下错误:

如果我尝试这样画关键点:

Features2d.drawKeypoints(novo, keypoints, resp);
Features2d.drawKeypoints(homer, keypointsHomer, resp);
两者都很好!
我做错了什么

我终于完成了!这里有一个与最终结果的链接。我希望这能在某种程度上帮助你,在GooglePlay上你可以看到关于这个项目的更多细节并下载源代码。请随意给我发封电子邮件。我用另一种方法解决了这个问题。我想功能2D.drawMatches在android上不起作用。可能只适用于JVM和android中不存在的组件。如果有人能证实我很感激。谷歌删除了该应用程序,但没有说明原因!=(但是源代码可以在我的网站quintao上与apk一起获得。信息结果:来源: