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这个库文件。——这点未解决
以上只是一些个人笔记,也许会有很多缺点,不正确的地方,只能慢慢看了。
首先说下我使用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这个库文件。——这点未解决
以上只是一些个人笔记,也许会有很多缺点,不正确的地方,只能慢慢看了。
相关文章推荐
- Android学习笔记之常用控件
- Android Gallery3D源码分析(二)
- 工厂设计模式
- Android控件详解之网格控件
- Android Gallery3D源码分析(一)
- android anatomy and physiology 笔记
- android adb install + apk 与adb push+apk两种安装apk的使用总结
- Android 中listview 和scrollview 滚动冲突事件的解决方法
- 单例设计模式
- Android开发之旅
- Android:Intent传递数据的几种类型和源码实现
- android_Color.RGB 颜色之间渐变基本算法
- Android 开发资源
- Android客户端添加正式签名文件的操作说明
- 解决Android系统中CSS设置select高度无效的BUG
- android中的Bitmap
- android animation的简单使用
- Android 之LayoutInflater详解
- (转)Android 操作系统的内存回收机制
- (转)Android系统启动过程