最近需要自己编译OpenCV主要有两个出发点:
- 想用OpenCV调用Kinect摄像头,发现需要OpenCV支持OpenNI;
- 目前的SIFT,SURF算法都从OpenCV源码中移除,放到了opencv_contrib里面,需要一起编译才可以;
- 希望OpenCV支持C++11特性。
基于以上目的,开始利用CMake编译OpenCV。
系统要求
- opencv-3.4.5源码
- opencv_contrib-3.4.5源码
- openni库
- cmake-gui
文件夹结构
本次编译创建的文件夹结构如下:
|
|
配置及编译
CMake GUI初配置
- 打开cmake-gui软件,点击
Browse Source...
,选择opencv/src/opencv-3.4.5
文件夹,点击确定; - 点击
Browse Build
,选择opencv/build
文件夹,点击确定; - 点击
Configure
,等待初次配置完成
配置CMake选项
- 启用C++11特性,在cmake-gui中查找
ENABLE_CXX11
,启用; - 配置opencv_contrib,查找
OPENCV_EXTRA_MODULES_PATH
,设置值为/path/to/opencv/src/opencv_contrib-3.4.5/modules
,随后查找OPENCV_ENABLE_NONFREE
,启用; - 支持OPENNI,查找
WITH_OPENNI
以及WITH_OPENNI2
,根据需要启用;
生成
多点击几次Configure
,直到没有错误提示,若提示找不到openni之类的,就是库没装好。随后点击Generate
,便在build文件夹下生成对应的工程文件
编译
根据不同的工程文件采用对应的编译方式编译即可,在Linux下生成的Makefile,可以直接make
编译,然后make install
安装即可。