首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android OpenCV -目标跟踪

Android OpenCV -目标跟踪
EN

Stack Overflow用户
提问于 2013-12-20 13:09:28
回答 1查看 4.7K关注 0票数 2

我使用特性检测实现了对象跟踪,并得到了以下错误:

12-19 20:59:16.943: E/cv::error()(31858):/home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp,文件/home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp,中的OpenCV错误:断言失败(src.dims == 2& info.height == (uint32_t)src.rows & info.width == (uint32_t)src.cols)第97行12-19 20:59:16.943: E/org.opencv.android.Utils(31858):nMatToBitmap catched cv::Exception: /home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: error:(-215) src.dims == 2& info.height == (uint32_t)src.rows & info.width == (uint32_t)src.cols12-19 20:59:16.943: E/CameraBridge(31858):Mat类型: Mat 820*2672*CV_8UC3,isCont=true,isSubmat=false,nativeObj=0x55650380,/home/reports/ci/slave_desktop/50-SDK/opencv/modules/java/generator/src/cpp/utils.cpp:97: dataAddr=0x5ec20010 12-19 20:16.943: E/CameraBridge(31858):位图类型: 960*720 12-19 20:59:16.943: E/CameraBridge(31858):Utils.matToBitmap()抛出异常:Utils.matToBitmap错误:(-215) src.dims == 2& info.height == (uint32_t)src.rows & info.width ==函数Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*,中的(uint32_t)src.cols( jclass,jlong,jobject,jboolean)

这是密码:

代码语言:javascript
运行
复制
    public void onCameraViewStarted(int width, int height) {
    mRgba = new Mat();
    mGray = new Mat();
    mView = new Mat();
    mObject = new Mat();
}

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {    
    mRgba = inputFrame.rgba();

    switch (viewMode) {
    case VIEW_MODE_RGBA:

        return mRgba;

    case VIEW_MODE_FeatureDetect:
        try {
        mGray = inputFrame.gray();
        mObject = new Mat();
        mObject = Highgui.imread(Environment.getExternalStorageDirectory()+ "/Android/data/" + getApplicationContext().getPackageName() + "/Files/Object.jpg", Highgui.CV_LOAD_IMAGE_GRAYSCALE);
        mView = mGray.clone();          

        FeatureDetector myFeatureDetector = FeatureDetector.create(FeatureDetector.ORB);

        MatOfKeyPoint keypoints = new MatOfKeyPoint();
        myFeatureDetector.detect(mGray, keypoints);

        MatOfKeyPoint objectkeypoints = new MatOfKeyPoint();
        myFeatureDetector.detect(mObject, objectkeypoints);

        DescriptorExtractor Extractor = DescriptorExtractor.create(DescriptorExtractor.ORB);
        Mat sourceDescriptors = new Mat();
        Mat objectDescriptors = new Mat();
        Extractor.compute(mGray, keypoints, sourceDescriptors);
        Extractor.compute(mGray, objectkeypoints, objectDescriptors);
        DescriptorMatcher matcher = DescriptorMatcher.create(DescriptorMatcher.BRUTEFORCE);

        MatOfDMatch matches = new MatOfDMatch();
        matcher.match(sourceDescriptors, objectDescriptors, matches);

        Features2d.drawMatches(mGray, keypoints, mObject, objectkeypoints, matches, mView);

        return mView;
        } catch (Exception e) {
            Log.d("Exception",e.getMessage());
        }

    }

    return mRgba;
}

它不能在屏幕上显示对象,但我需要一些信息,我可以放置矩形或一些东西,我可以标记对象,我想要跟踪的东西。对不起,我的英语,我希望你能理解我的要求,谢谢你的建议。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-21 08:38:54

感谢达山的建议,我解决了这个问题,它需要调整图像的大小,在Features2d.drawMatches(mGray, keypoints, mObject, objectkeypoints, matches, mView);下面添加像这个Imgproc.resize(mView, mView, mGray.size());这样的代码,然后它就可以工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20704331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档