开发环境:windows+ADTBundle+CDT+OpenCV-4-android-sdk
OpenCV4简介
OpenCV近年来发展迅猛,随着Android智能终端的发展,越来越多的传统科研平台都转向Android移动终端。记得2010年人们还不大知道Android,当时第一次用OpenCV还是用的0.2版本在VC0上。早期的OpenCV只提供C语言接口,你要申请个矩阵还得CvMat*mat=cvCreateMat(...)写一大串,这样做是为了保证程序的运行效率,带来的不便是要开发者手动管理内存分配,稍有不慎内存泄漏那是常有的事。在OpenCV的发展历程上,第一次飞跃是2009年10月1日发布的0版本,该版本支持C++接口了,是直接从2版本跳到0。不久又推出了自此后想要移植OpenCV至嵌入式系统,在编译时必须借助CMake工具,而以往的不用。
第二次飞跃是在2010年6月发布的1版本,除提供C++接口向下兼容C接口外,新增了Java接口,且是对准Android平台。更重要的是以前官方不支持ndk-build,这次终于一统JNI接口调用方式,方便在Android上开发使用。2012年4月2日发布了4版本,支持windows/Linux、Mac/Android/IOS四大系统。
最新的版本是2013年11月11日发布的7版本。我电脑上配置的是4版本。
从4之后,为了和Android的系统架构保持同步,准确说是吸收Android框架层的优点,引入了OpenCVManager的概念,其本质就是一个Service,用来管理OpenCV动态链接库。它工作在APP和OpenCV的动态链接库之间。OpenCVManager的结构就是模仿Android的Binder机制。其架构如下:
APP在运行时会首先检查OpenCVManager存在不,如果不存在则会提示安装。如果存在,就会连接这个服务,进一步初始化加载OpenCV库。流程如下:
对于开发者而言,了解即可。从应用层面讲,将OpenCV-4-android-sdk解压后,会看到如下文件夹:
其中sdk就是开包时要用到的包,samples是自带的示例,doc是说明文档,apk则就是OpenCVManager。手机想要运行基于OpenCV的Java接口的程序,就必须先安OpenCVManager。
不同的手机选择不同的版本,如果是英特尔平台就选那个带x86的。比较老的手机不支持ARMv7的选第三个。根据android的版本选择前两个。我手机支持的是第一种。安装后即可。
文章为作者独立观点,不代表股票交易接口观点