前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >OpenCV 4.6 Android SDK 目录详解

OpenCV 4.6 Android SDK 目录详解

作者头像
zinyan.com
发布2023-07-14 10:59:32
3140
发布2023-07-14 10:59:32
举报
文章被收录于专栏:zinyanzinyan

1. 介绍

主要介绍通过https://github.com/opencv/opencv/releases 下载的 SDK的目录结构。

基于当前最新opencv-4.6.0-android-sdk 版进行的介绍。

2. SDK

主要介绍大功能和目录,一些Android Studio或者配置文件就不进行介绍了。

当我们解押SDK压缩包后,通常会见到两个目录:

  • samples :官方实例,各种功能模块的Demo,让我们可以了解相关API和功能的实现。
  • sdk:openCV 核心SDK,我们主要通过该SDK来使用OpenCV 提供的功能。

2.1 samples 目录

OpenCV 提供的官方实例,每个独立的module模块代表了openCV的一种使用场景。我们可以通过导入到Android Studio中进行编译成App了解具体的功能作用。

  • 15-puzzle:15个拼图实例,展示了如何通过OpenCV来实现一个简单的游戏。主要就是Imgproc绘制线条,文字以及响应触摸。
  • camera-calibration:摄像机校准实例,通过calibrate(校准),设置calibration(标定),undistortion(不失真),comparison(比较)类型,实现摄像头的校准。
  • color-blob-detection:斑点检测实例(色斑识别),介绍了选择一个色块后(触摸)然后openCV就会查找图片中对应颜色的轮廓,并用红色的细线进行框出。
  • face-detection:人脸识别实例,识别摄像头中的人脸,并用矩形框标注。(精度并不是很好)
  • image-manipulations:图像操作实例,例如:hist,canny,sobel,transform,resize,rectangle,canvertScaleAbs,cvtColor等api的使用。(上面api都是通过Core 或 Imgproc类进行调用)
  • tutorial-1-camerapreview:相机预览实例,介绍了如何使用OpenCV实现相机调用和预览显示。
  • turorial-2-mixedprocessing:混合处理实例,介绍了使用 Java 和 C++ 调用 OpenCV 来预处理相机预览帧的方法。
  • tutorial-3-cameracontrol:摄像头控制实例,介绍了基于OpenCV实现摄像头的基本操作,可以更改相机预览分辨率,调用相机内置效果,拍摄和保存图片,等一些相机的操作。

都是一些实例Demo。我们可以通过上面的例子了解一下。

2.2 sdk 目录

整个库最重要的内容就是sdk库了。

  • etc:各类模型文件存储地址,我们编译时不会编译到app中
    • haarcascades:人脸检测的模型数据,harr特征训练的文件。
    • lbpcascades:人脸检测的模型数据,lbp特征训练的文件。
    • licenses:存放opencv的各种开源许可证,包括开源项目的版权声明,使用条件,免责声明等等。
    • valgrind.supp:Valgrind内存泄漏检测工具配置文件。(我们使用SDK时并不会用上)
    • valgrind_3rdparty.supp:针对3rdparty模块的内存泄漏检测工具配置文件。(我们使用SDK时并不会用上)
  • java java版本api信息
    • android:一些基于Android的配置,例如自定义JavaCamera2View,Util工具(Bitmap与mat互转),OpenCVLoader(so库初始化等等)
    • calib3d:这个模块主要是相机定标校准和三维重建,立体视觉等功能。
    • core:该模块包含 OpenCV 库的基础结构以及基本操作。例如Mat,Core(基础运算操作),MatOfPoint,Rect2d,Size类等。
    • dnn:主要是深度神经网络模块。包括构建神经网络,加载序列化网络模型等。
    • engine:主要是处理dnn的引擎映射(现在只是一个aidl接口)
    • features2d:这个模块包含用于检测、描述以及匹配特征点的算法。也就是物体的2D特征。
    • imgcodecs:这个模块主要包括各种图形的读写操作。
    • imgproc:图像处理模块包含基本的图像转换,包括滤波以及类似的卷积操作。
    • ml:主要是机器学习算法的实现,并且这些算法都能和 OpenCV 的数据类型自然交互。是一些视觉中最常用的传统机器学习算法
    • objdetect:这个模块包含检测特定目标,比如人脸或者行人的算法。也可以训练检测器并用来检测其他物体。
    • osgi:主要是加载OpenCV native库的。
    • photo:这是一个相当新的模块,包含计算摄影学的一些函数工具。现在主要是处理图像修复和降噪等。
    • utils:Converters 工具类,主要处理各类数据(Byte,Point,RotatedRect,MatOfByte,Double)添加到Mat中。或者多Mat合成一个Mat等。
    • video:主要是对视频进行分析处理处理,例如运动估计,背景分离,对象跟踪等视频处理。
    • videoio:主要包括视频的读写操作。
    • javadoc :java API 帮助文档
    • src/org.opencv 关键目录
  • libcxx_helper :主要编译打包libc++_shared.so 这个库。
  • native 原生代码
    • abi-xxxx:各类环境的cmake编译脚本。
    • include:对应的java的代码,java代码对应的jni实现 (更多的在java层进行了介绍。这里再加上一些java层没有的包)
    • flann:这个模块是高维的近似近邻快速搜索算法库,主要包含快速近似最近邻搜索与聚类等。
    • gapi:在加速常规的图像处理,这个模块主要充当框架而不是某些特定的计算机视觉算法。
    • highgui:高层GUI图形用户界面,包含创建和操作显示图像的窗口、处理鼠标事件以及键盘命令、提供图形交互可视化界面等等。
    • 3rdparty:第三方库(OpenCV中使用的其他第三方库的静态库)
    • jni:opencv jni层
    • libs:存放各种cpu类型的编译后的libopencv_java4.so动态库
    • staticlibs:存储各类静态库 libopencv_xxx.a文件

大概的目录结构就是这样的了。

而我们普通使用OpenCV的话,接触更多的应该是Core类,Mat类和Imgproc类吧。

OpenCV 在更新迭代过程中,目录结构也随时会发生变化。可能会有新增或者减少。当弄明白了大部分的目录结构,新增或者减少的部分,对我们影响并不大。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-10-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 zinyan 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 介绍
  • 2. SDK
    • 2.1 samples 目录
      • 2.2 sdk 目录
      相关产品与服务
      检测工具
      域名服务检测工具(Detection Tools)提供了全面的智能化域名诊断,包括Whois、DNS生效等特性检测,同时提供SSL证书相关特性检测,保障您的域名和网站健康。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档