俗话说万事开头难,但是这个开头真的不难,因为人家文档写的好啊!
OpenCV是什么呢?经过查询官方资料和百度、谷歌等,大概了解到:
1、图像处理 利用计算机对图像进行分析处理,达到所需结果的技术,一般指的是数字图像处理,通过数码设备得到的数字图像是一个很大的二维数组,数组的元素叫像素,像素的值叫灰度值。主要的处理方法有去噪,增强,复原,分割,提取特征等等。
2、计算机视觉 是研究如何使计算机可以像人一样“看”的一门科学,属于人工智能的范畴,是用计算机来识别、追踪、测量等等收集信息的科学。
3、图像处理侧重于处理图像,而计算机视觉侧重于模拟人的视觉。
4、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版本
首先打开官方主页之后找到网站底部
选择最新版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}/${ANDROID_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} )
sourceSets{
main{
jniLibs.srcDirs=["E:/OpenCV-android-sdk/sdk/native/libs"]
}
}
好,大功造成,环境搭建完毕