您的位置:首页 > 移动开发 > Android开发

OpenCV(第一篇OpenCV的android环境搭建)学习

2017-11-09 15:46 567 查看
俗话说万事开头难,但是这个开头真的不难,因为人家文档写的好啊!

OpenCV是什么呢?经过查询官方资料和百度、谷歌等,大概了解到:

1、图像处理 利用计算机对图像进行分析处理,达到所需结果的技术,一般指的是数字图像处理,通过数码设备得到的数字图像是一个很大的二维数组,数组的元素叫像素,像素的值叫灰度值。主要的处理方法有去噪,增强,复原,分割,提取特征等等。

2、计算机视觉 是研究如何使计算机可以像人一样“看”的一门科学,属于人工智能的范畴,是用计算机来识别、追踪、测量等等收集信息的科学。

3、图像处理侧重于处理图像,而计算机视觉侧重于模拟人的视觉。

4、OpenCV 是一个基于开源的跨平台计算机视觉库,实现了许多图像处理和计算机视觉方面的通用算法,是计算机视觉领域最有力的研究工具之一

OpenCv的主要用途:

人机互动 物体识别 图像分割 人脸识别 动作识别 运动跟踪 机器人 运动分析 机器视觉 结构分析 汽车安全驾驶 自动驾驶………………

看着这个用途就有点小激动了,学会OpenCV居然可以开发这么多领域的东西,瞬间动力来了


OpenCV模块分类:

1-      core,核心功能模块,主要包含如下的内容:

OpenCV基本数据结构(BasicStructures);

基本的C语言数据结构和操作(BasicC Structures and Operations);

动态数据结构(DynamicStructures);

数组操作相关函数(Operationson Arrays);

绘图功能(DrawingFunctions);

XML和YAML语法的支持(XML/YAMLPersistence);

XML和YAML语法的支持的C语言接口(XML/YAMLPersistence (C API));

聚类(Clustering);

辅助功能与系统函数和宏(Utilityand System Functions and Macros);

与OpenGL的互操作(OpenGLinteroperability);

2-      imgproc,是ImageProcessing的简写。图像处理模块,主要包含以下内容:

 

线性和非线性的图像滤波(ImageFiltering);

图像的几何变换(Geometric ImageTransformations);

图像的其他变换(MiscellaneousImage Transformations);

直方图(Histograms);

结构分析和形状描述(StructuralAnalysis and Shape Descriptors);

运动分析和目标跟踪(MotionAnalysis and Object Tracking);

特征检测(FeatureDetection);

目标检测(Object Detection);

3-      highgui,是High-levelGUI and Media I/O的简写。高层用户界面模块和媒体输入/输出模块,主要包含以下内容:

 

用户界面(User Interface);

图片和视频的读写(Reading andWriting Images and Video);

QT新功能(Qt NewFunctions);

4-      features2d,是2D FeaturesFramework的简写。二维特征框架模块,主要包含以下内容:

人脸识别

VR和AR

特征的检测和描述(FeatureDetection and Description);

特征检测器的通用接口(CommonInterfaces of Feature Detectors);

描述符提取器的通用接口(CommonInterfaces of Descriptor Extractors);

描述符匹配器的通用接口(CommonInterfaces of Descriptor Matchers);

通用描述符匹配器通用接口(CommonInterfaces of Generic Descriptor Matchers);

关键点和匹配结果的绘制功能(DrawingFunction of Keypoints and Matches);

目标分类(ObjectCategorization);

5-      flann,Clusteringand Search in Multi-Dimensional Spaces,多维空间聚类和搜索模块,主要包含以下内容:

 

快速近视最近邻搜索(FastApproximate Nearest Neighbor Search);

聚类(Clustering);

6-      video,是VideoAnalysis的简写。视频分析模块,主要包含以下内容:

 

运动分析和目标跟踪(MotionAnalysis and Object Tracking),视频相关的,上面提到的是图片相关的;

7-      calib3d ,是CameraCalibration and 3D Reconstruction的简写。这个模块主要是相机校准和三维重建相关的内容,包括基本的多视角几何算法、单个立体摄像头标定、物体姿态估计、立体相似性算法,3D信息的重建等。

接下里开始环境的搭建,这里采用的是android studio2.3.3版本

OpenCV官方链接

首先打开官方主页之后找到网站底部



选择最新版OpenCV3.3进入,然后拉到网页最下面



这里分了三种平台下载,windows、ios和android,这里选择android进行下载,下载完之后的文件结构如下



apk:这个目录提供了官方给我们的demo

samples:这个目录下存放了demo的源代码

sdk:这个目录存放了我们要使用的静态库、动态库、以及头文件

接下来打开studio创建新项目



这里一定要注意勾选绿色框扩起来的部分,所有要开发ndk项目的都要勾选这个,最后创建完项目之后的目录结构如下



注意圈起来的边框,相对于建造普通项目多了CMakeLists,要开发NDK项目就需要配置这个文件,如果你用过eclipse开发ndk,那么一定熟悉android.mk文件,只不过时编译脚本不一样罢了,接下来配置该文件

#该变量为真时会创建完整版本的Makefile

set(CMAKE_VERBOSE_MAKEFILE on)

 

#定义变量ocvlibs使后面的命令可以使用定位具体的库文件

set(ocvlibs"D:/OpenCV-android-sdk/sdk/native/libs")

 

#调用头文件的具体路径

include_directories(E:/OpenCV-android-sdk/sdk/native/jni/include)

 

add_library(libopencv_java3 SHARED IMPORTED )

set_target_properties(libopencv_java3PROPERTIES

                     IMPORTED_LOCATION

                                                 "${ocvlibs}/${ANDRO
4000
ID_ABI}/libopencv_java3.so")

最后的地方改动

target_link_libraries(# Specifies the target library.

                       native-lib libopencv_java3android log

                       # Links the targetlibrary to the log library

                       # included in the NDK.

                      ${log-lib} )

上面的配置将sdk中的静态库和头文件全部引入,最后在app下的build.gradle中加入
sourceSets{

main{

jniLibs.srcDirs=["E:/OpenCV-android-sdk/sdk/native/libs"]

}

}

好,大功造成,环境搭建完毕
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息