初始OpenCV

之前看了一下OpenCV的书,但是一直没有笔记。这次来简单写一下自己学到的东西。看书的时候面向对象有“想自我提升的中高级程序员”,好吧,那我就暂时把自己定位高级程序员吧。

认识OpenCV

简单来说,OpenCV就是个库。

OpenCV的意思是计算机开源视觉库(Open Source Computer Library),我们常说的OpenCV分为正式发布版本和扩展模块,现在发布的OpenCV正式版本中核心模块大概有:

二维与三维特征工具箱、运动估算、人脸识别、姿势识别、人机交互、运动理解、对象检测 、移动机器人 、分割与识别、视频分析、运动跟踪、图像处理、深度神经网络

注意:在核心模块中的持久性(在XML,YAML或JSON中存储和加载结构化数据)已在C ++中完全重新实现,并且也丢失了C API。

到这里就应该知道,OpenCV是一个通过JNI调用的有C/C++写的代码库,并不是由JAVA代码完成的。我们可以通过下面的链接进行下载OpenCV4Android:

https://opencv.org/releases.html

下载完成之后解压文件,解压所得文件夹中有SDK文件夹,SDK文件夹结构大概为下图:

其中,etc文件夹下为训练好的LBP和HAAR数据;java下是android sdk相关文件;native里面则是基于C/C++编译好的OpenCV Android平台支持的本地库文件,JNI层开发所需要的头文件及cmake文件,其中库文件大多数是以.a和.so后缀的文件。

在和SDK统同级的文件中有一个samples文件夹,这个文件为OpenCV的一些使用提供了Android的例子,可以参考一下。注意:需要安装NDK,如果没有安装系统会提示你安装,在安装NDK时会有链接reset或者链接不到的问题,请自行百度解决,不再赘述。

最后需要知道的是,OpenCV4Android(OpenCV Android)版本和OpenCV对应发布的版本是完全一样的,只是调用需要切换成Java语言。

开始使用OpenCV

使用方法和我们平常使用其他SDK是一样的:

  • 选择File - New - Import Module ,然后选择之前解压出来的SDK/JAVA文件夹,系统会自动显示OpenCV版本信息
  • 打开Project Structure添加依赖
  • 复制native/libs下的所有文件到app/libs下,如果找不到app/libs文件夹,请将Android视图切换为Project视图。然后删除所有.a后缀的文件。
  • minSDKVersion改为14
  • 在module:app对应的build.gradle脚本中添加以下内容

task nativeLibsToJar(type: Jar, description:'create a jar archive of the native libs') {
 destinationDir file("$buildDir/native­libs")
 baseName 'native­libs'
 from fileTree(dir: 'libs', include: '**/*.so')
 into 'lib/'
}
tasks.withType(JavaCompile) {
 compileTask ­> compileTask.dependsOn(nativeLibsToJar)
}

  • 然后在编译片段添加:

implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')

至此导入结束,下篇文章为测试是否导入成功和其简单的应用。

有条件的可以系统地学习一下这一块,或者你可以点击这个链接在线学习:https://www.w3cschool.cn/opencv/opencv-5tpl28xc.html