Android中使用OpenCV(二)
来源:互联网 发布:斐波那契数列c语言for 编辑:程序博客网 时间:2024/06/05 17:22
转载请注明gao_chun的Blog:http://blog.csdn.net/gao_chun/article/details/72654286
Android中使用OpenCV
之前比较早的时候写了一篇博文: AndroidStudio中配置及使用OpenCV示例 ,主要介绍了如何在AS中使用OpenCV,基本的配置介绍及使用示例,上传的示例也比较潦草,使用的版本是 OPENCV_VERSION_2_4_9 ,各个版本号在OpenCV的SDK包中是可以看到的:
OpenCV-android-sdk\sdk\java\src\org\opencv\android\OpenCVLoader.java
package org.opencv.android;import android.content.Context;/** * Helper class provides common initialization methods for OpenCV library. */public class OpenCVLoader{ /** * OpenCV Library version 2.4.2. */ public static final String OPENCV_VERSION_2_4_2 = "2.4.2"; /** * OpenCV Library version 2.4.3. */ public static final String OPENCV_VERSION_2_4_3 = "2.4.3"; /** * OpenCV Library version 2.4.4. */ public static final String OPENCV_VERSION_2_4_4 = "2.4.4"; /** * OpenCV Library version 2.4.5. */ public static final String OPENCV_VERSION_2_4_5 = "2.4.5"; /** * OpenCV Library version 2.4.6. */ public static final String OPENCV_VERSION_2_4_6 = "2.4.6"; /** * OpenCV Library version 2.4.7. */ public static final String OPENCV_VERSION_2_4_7 = "2.4.7"; /** * OpenCV Library version 2.4.8. */ public static final String OPENCV_VERSION_2_4_8 = "2.4.8"; /** * OpenCV Library version 2.4.9. */ public static final String OPENCV_VERSION_2_4_9 = "2.4.9"; /** * OpenCV Library version 2.4.10. */ public static final String OPENCV_VERSION_2_4_10 = "2.4.10"; /** * OpenCV Library version 2.4.11. */ public static final String OPENCV_VERSION_2_4_11 = "2.4.11"; /** * OpenCV Library version 2.4.12. */ public static final String OPENCV_VERSION_2_4_12 = "2.4.12"; /** * OpenCV Library version 2.4.13. */ public static final String OPENCV_VERSION_2_4_13 = "2.4.13"; /** * OpenCV Library version 3.0.0. */ public static final String OPENCV_VERSION_3_0_0 = "3.0.0"; /** * OpenCV Library version 3.1.0. */ public static final String OPENCV_VERSION_3_1_0 = "3.1.0"; /** * OpenCV Library version 3.2.0. */ public static final String OPENCV_VERSION_3_2_0 = "3.2.0"; .....}
由于之前使用的OpenCV版本比较老,并且随着手机配置的增强,处理器越来越牛逼,Android的版本也在不断的更新,在配置过程中很多朋友留言说报出来各种乱七八糟的问题,不知道如何去处理,而且折腾了半天配置完还运行不起来,内心一万头草泥马~,所以我抽时间又整理了下,示例这次上传完整的,不管多大。
OpenCV介绍
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。这里你只需要知道它是一个视觉库就可以了,更加详细介绍可以去查阅相关资料。
OpenCV官网:http://opencv.org/,目前最新版本是3.2,下载链接:
Android:https://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-android/3.2.0/opencv-3.2.0-android-sdk.zip
iOS:https://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-ios/3.2.0/opencv-3.2.0-ios-framework.zip
GitHub下载:https://github.com/opencv/opencv/releases/tag/3.2.0
在之前那篇文章的基础上,我们就更换一下OpenCV的版本还有总结下之前问题的出现及解决方案。
我在下载了之前的旧版本示例后,尝试将新的3.2版本的 native—>Libs—>每个目录中的 libopencv_java3.so 复制到项目中时,很糟糕,出现了如下问题:
程序闪退,我或许不该这么干,因为从2.4.9到3.2.0也许更新了太多的东西,他们库里的方法或许是不能兼容的,这时,我还是乖乖按照 第一篇文章 中的方式将sdk —> java —> src下的代码Copy到项目中,OK,直接Run了一下看会不会成功,结果也很糟糕,报错信息如下:
这次比上次要好有点,起码它告诉我这条信息:dlopen failed: “/data/app/org.opencv.engine-1/lib/arm/libopencv_java3.so” is 32-bit instead of 64-bit
而且在手机中运行程序的提示信息:
Google一番之后,发现问题和使用的targetSDKVersion版本有关,也就是手机系统的版本,5.0? 6.0?Ok,那这个问题就引刃而解了。错误解决方案:
libopencv_java3.so is 64-bit instead of 32-bit Android/Eclipse error
Android 6.0: Load 32-bit OpenCV library on 64-bit arch
Error Opencv4Android: Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit
OpenCV Service Intent must be explicit, Android 5.0 Lolipop
也就是在Activity的onResume()方法中初始化OpenCV时,加入了一个判断,OpenCVLoader.initDebug() 可以跟踪进去看看代码。
若需要 OpenCV Manager支持可以到APP应用市场下载,这里我已经一并上传至项目apk目录下了,安装后的界面:
项目配置:
测试机360 N4
系统版本6.0
OpenCV版本3.2.0
targetSdkVersion 25
GitHub:https://github.com/gaochunchun/OpenCV-Demo
- Android中使用OpenCV(二)
- Android中使用OpenCV
- Android中使用OpenCV
- Android中使用OpenCV
- Android中使用opencv
- 在Android中使用OpenCv
- Android Studio中使用OpenCV Android SDK
- Android&OpenCv之Android程序加载OpenCv库(二)
- 如何在Android中使用OpenCV(最新版本)
- Android Studio中配置及使用OpenCV示例(一)
- Android中使用自定义Adapter(二)
- Android中使用自定义Adapter(二)
- android中sqlite的使用(二)
- Android中AsyncTask的使用(二)
- Android中ExpandableListView的使用 (二)
- Android中ExpandableListView的使用(二)
- Android中ExpandableListView的使用(二)
- Android中AIDL的使用(二)
- Windows Server 2012 系统群集
- js的垃圾回收机制
- 去重删除重复的行,只留一条
- 对象的初始化
- 使用极光/友盟推送,APP进程杀死后为什么收不到推送
- Android中使用OpenCV(二)
- VS2013下串口数据char型转COleVariant问题
- [笔试]大端、小端
- 基于springMVC文件上传的例子。ajax提交表单,子窗口关闭刷新父界面的demo
- 构造函数初识上篇---this
- sed指令修改arm-Linux系统的开发板网络配置文件 eth0-setting。
- 构造函数---this(2)
- 构造函数之初始化操作(1)
- 51nod:1130 N的阶乘的长度 V2(斯特林近似)(数学公式)