您的位置:首页 > 移动开发 > Android开发

在Android中使用OpenCV 2.4.5库

2013-06-10 14:23 274 查看
虽然在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.


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

实现CvCameraViewListener 需要实现的虚函数,Eclipse中可以自动补全需要实现的虚函数。
定义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;
}
}
};


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


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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: