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

OpenCV4Android杂记

2015-08-08 15:23 260 查看
序:使用OpenCV4Android 2.4.9 + NDK10(不安装Manage)

首先说下我使用OpenCV4Android 3.0.0 + NDK9 不安装Manage是失败的,虽然不太科学,但是现在先拿2.4.9版本用一下。

对于不安装Manage,网上还是有不少说法的,常见的就是修改Android.mk文件,或者在工程目录添加“libs”-“armeabi-v7a”-“libopencv_java.so”,如果是face-detection那个sample应该还要加上“libs”-“armeabi-v7a”-“libdetection_based_tracker.so”。对于libdetection_based_tracker.so,我在下载的OpenCVC压缩包里面是找不到,我从网上一个工程里面复制而来的。

接下来几句和网上多数说法是一样的:

1、onResume(***)方法里面注释掉OpenCVLoader.initAsync(***),大概意思就是让 应用别去导入库之类的,不执行这个语句,自然就不存在这个语句后的回调,所以可以把上边的private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this){}整个块都注释掉。

2、因为没有安装manage,没有库使用,所以需要手动去导入一个库,就是刚刚提到的2个so文件。

static {

System.loadLibrary("opencv_java");

System.loadLibrary("detection_based_tracker");//有些工程不需要可以不加,不需要的时候目录下的这个so也删掉,不然占apk大小

}

把上面的语句块放到成员之后,方法之前的位置。

3、其实第1点提到的回调方法里面一般会包含mOpenCvCameraView.enableView();这个语句,因为刚刚注释掉了,所以现在手动把这个语句复制到以下两个语句的中间。

mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);

mOpenCvCameraView.setCvCameraViewListener(this);

如果我没记错的话,应该改完了。Android.mk都没有去碰。

另外要说说的是OpenCV4Android的sample导入eclipse新的工作区之后,应该会出现红色的感叹号 或 叉叉。第一个工程应该是一个Library,需要右键-属性-Android-右上边的框内选择你的SDK版本,我的是4.4.2 。

剩下的每个工程都需要做同一件事。project.properties里面target=android-11改为你自己的版本,我的是target=android-19。

也许这个时候还有一两个工程师有红色叉叉的,这一两个工程师带有JNI文件夹的,也就是里面有C++文件,这个时候右键工程-属性-C/C++ Build-Build command里面设置你的NDK路径。NDK9是解压缩包就可以了,NDK10是个exe打开是个cmd窗口等它解压后是个文件夹。你可以设置系统变量NDKROOT,或者直接设置为绝对路径。做完上述操作,应该是没有错误的了,虽然Console还是会提示找不到ndk-build.cmd路径,但是不会影响使用。

调用Camera等代码一般都Java方法 或 JNI(native)方式,如果需要在代码中做切换到native方式,需要在libs最终包含libnative_camera_r*.*.*.so这个库文件。——这点未解决

以上只是一些个人笔记,也许会有很多缺点,不正确的地方,只能慢慢看了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: