在Android中使用OpenCV 2.4.5库

虽然在OpenCV官网上有如何在Android中使用OpenCV库的文章,但是按照那个文章来根本没法成功调入OpenCV库。因此特撰写此文给出正确的挂载库的方法和挂载OpenCVManager时,函数调用的顺序。


首先本文不讨论如何通过static静态块的方法挂载OpenCV库(因为这个方法我没有成功),讨论的是通过实现 CvCameraViewListener 接口同步挂载OpenCV库,这也是OpenCV官网上推荐的做法:

Using async initialization is arecommendedway for application development. It uses the OpenCV Manager to access OpenCV libraries externally installed in the target system.

通过此方法挂载的步骤为:

  1. 实现CvCameraViewListener 需要实现的虚函数,Eclipse中可以自动补全需要实现的虚函数。
  2. 定义BaseLoaderCallback回调函数接口,并实现这个类中的onManagerConnected()方法
    	private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
            @Override
            public void onManagerConnected(int status) {
                switch (status) {
                    case LoaderCallbackInterface.SUCCESS:
                    {
                    	System.out.println("OpenCV loaded successfully");
                    } break;
                    default:
                    {
                    	System.out.println("OpenCV loaded Failed!");
                        super.onManagerConnected(status);
                    } break;
                }
            }
        };

  3. 覆写Activity中的OnResume方法,在调用默认OnResume后进行OpenCV库的同步挂载(2.4.5版本)
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_5, this, mLoaderCallback);

  4. 至此实现了OpenCV库的挂载,关键的问题来了,在OnCreate函数中不能使用OpenCV库相关的类和方法,因为此时OpenCV库还没有挂载上去!即使把initAsync方法放到OnCreate中也不行!博主在这里卡了很久通过各种调试才发现这个问题。可以使用Handler的方法延迟新的线程的启动以等待OpenCV库的加载


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值