安装
1.1
OpenCV是一个开源的软件,在一个source文件下,包含了所有的源代码文件。
使用哪种操作系统?windows还是linux?使用哪种编译器?
注意,执行安装包很可能不仅仅安装源文件,还可能安装构建应用程序所需的已编译的二进制文件。检查build目录,它应该包含x64和x86,子目录下有vc10,vc11,vc12等,对应了不同的visual studio的二进制文件。
为了完成安装过程并构建OpenCV二进制文件,你需要实用CMake工具,该工具可从http:cmake.org下载。CMake是另一个开源的软件工具,用于控制使用了跨平台配置文件的软件系统的编译过程。它可以生成在特定环境下编译软件库所需要的makefile和workspace文件。
因此你需要事先下载并安装CMake,之后可以使用命令工具来运行CMake。
在Linux环境下,你可以用make实用命令运行前面生成的makefile文件。为了完成所有的目录的安装,你需要运行Build INSTALL 或者sudo make INSTALL
1.2
安装Contrib模块
有些模块包含在称为opencv_contrib的资源库中,他们可以在https://github.com/Itseez/opencv_contrib下载,这与Opencv不同。强烈建议安装这些模块,因为他们含有Opencv没有的功能,例如人脸识别等。
下载完成之后(无论是zip还是git,推荐使用git,可以用git pull命令来获取),需要重新运行如下的cmake命令,该命令可生成带opencv_contrib模块的Opencv项目:
cmake -DOPENCV_EXTRA_MODULES_PATH = <opencv_contrib>/modules <opencv_source_directory>
如果已经按照标准流程进行安装并在下载opencv的文件夹下创建一个build文件夹,然后运行下面的命令:
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE = Release -DOPENCV_EXTRA_MODULES_PATH = <opencv_contrib>/modules -D CMAKE_INSTALL_PREFIX = /usr/local ..
make
如果扩展库文件不能用,考虑安装3.4.2.16版本的opencv-python和opencv-contrib-pyhton的库
实现原理
常用的模块:
- opencv_core模块,包含了程序库的核心功能,特别是基本的数据结构和算法函数
- opencv_imgproc模块,包含了主要的图像处理函数。
- opencv_highgui模块,包含图像,视频读写函数和部分用户界面函数
- opencv_features2d模块,包含特征点检测器,描述子以及特征点匹配框架
- opencv_calib3d模块,包含相机标定,双视角几何估计以及立体函数
- opencv_video模块,包含运动估计,特征跟踪以及前景提取函数和类
- opencv_objdectect模块,包含目标检测函数,例如面部和人体探测器
所有的这些模块都有一个对应的头文件(位于include文件夹下)。因此,典型的OpenCV C++代码会首先包含必须的模块。例如:
- include <opencv2/core/core.hpp>
- include <opencv2/imgproc/imgproc.hpp>
- include <opencv2/higgui/higgui.hpp>
错误
参考的opencv的一个社区里的解决方案
错误如下
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:85 (list):
list GET given empty list
Call Stack (most recent call first):
CMakeLists.txt:68 (include)
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:86 (list):
list GET given empty list
Call Stack (most recent call first):
CMakeLists.txt:68 (include)
CMake Error at cmake/OpenCVDetectCXXCompiler.cmake:89 (math):
math cannot parse the expression: "*100 + ": syntax error, unexpected
exp_TIMES, expecting exp_PLUS or exp_MINUS or exp_OPENPARENT or exp_NUMBER
(1)
Call Stack (most recent call first):
CMakeLists.txt:68 (include)
-- Detected version of GNU GCC: ()
解决方案如下
https://github.com/opencv/opencv/pull/9430/files
sir, this error puzzled me for some hours and i found this github page. i will take OpenCV2.4.13 as example, in file opencv2.4.13/cmake/ OpenCVDetectCXXCompiler.cmake, u have to change “dumpversion” to “dumpfullversion”
explanation is that in gcc with higher version, dumpversion function can’t get true full version number of compiler so that cmake progress will fail.