opencv :主存储库,包含核心类型和函数、稳定算法、构建脚本和工具
opencv_contrib :包含实验性和不稳定的算法,需要主库来构建
opencv_extra :包含测试和其他文件的数据
参考文档:https://docs.opencv.org
https://docs.opencv.org/4.3.0/d7/d9f/tutorial_linux_install.html
需要的环境
- GCC 4.4.x以上;
- CMake 2.8.7以上;
- Git
- GTK+2.x以上, 包含 头文件 (libgtk2.0-dev)
- pkg-config
- Python 2.6以上, Numpy 1.5以上且带开发包(python-dev, python-numpy)
- ffmpeg或 libav开发包: libavcodec-dev, libavformat-dev, libswscale-dev
- [可选] libtbb2 libtbb-dev
- [可选] libdc1394 2.x
- [可选] libjpeg-dev, libpng-dev, libtiff-dev, libjasper-dev, libdc1394-22-dev
- [可选] CUDA Toolkit 6.5 or higher
安装相关软件包
[编译器] sudo apt install build-essential
[依赖] sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[可选] sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
错误:解决无法定位软件包 libjasper-dev
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt install libjasper1 libjasper-dev
用 CMake编译
1.创建一个临时目录,在其中放置生成的makefile、项目文件以及目标文件和输出二进制文件,并进入该目录:
cd ~/opencv
mkdir build
cd build
2.配置:运行cmake [<可选参数>] <源目录>
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
- 注意:如果报错,使用 -D 后面不加空格进行重试,如:
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
3.参数描述
- 编译类型:CMAKE_BUILD_TYPE=Release\Debug;
- 若要编译opencv_contrib中的模块,则使用OPENCV_EXTRA_MODULES_PATH来设置到该模块的路径;
- 设置BUILD_DOCS来编译文档;
- 设置BUILD_EXAMPLES来编译所有示例;
4.【可选】编译 python,可设置以下参数
- PYTHON2(3)_EXECUTABLE =
- PYTHON_INCLUDE_DIR = /usr/include/python
- PYTHON_INCLUDE_DIR2 = /usr/include/x86_64-linux-gnu/python
- PYTHON_LIBRARY = /usr/lib/x86_64-linux-gnu/libpython.so
- PYTHON2(3)_NUMPY_INCLUDE_DIRS = /usr/lib/python/dist-packages/numpy/core/include/
5.【可选】编译 JAVA
- 不要设置参数: BUILD_SHARED_LIBS
- 不要设置BUILD_EXAMPLES、BUILD_TESTS、BUILD_PERF_TESTS也很有用:因为它们都将静态地链接到OpenCV,并且会占用大量内存;
6.【可选】生成pkg-config信息
- 运行CMake时,增加选项:
-DOPENCV_GENERATE_PKGCONFIG=ON
- 将生成.pc文件,且安装它;
- 在使用OpenCV的项目中,如果不使用CMake,则非常有用;
- 安装opencv4,格式: pkg-config --cflags --libs opencv4
7.编译:从build目录执行make,建议在几个线程中执行此操作
make -j7
8.【可选】编译文档: 进入 <cmake的编译目录/doc/>目录,且运行
cd ~/opencv/build/doc/
make -j7 doxygen
9.安装库:在编译目录执行以下命令
sudo make install
10.[可选]运行测试
从 OpenCV extra repository获取所需的测试数据
git clone https://github.com/opencv/opencv_extra.git
- 设置OPENCV_TEST_DATA_PATH环境变量为<path to opencv_extra/testdata>
- 在编译目录执行测试:<cmake_build_dir>/bin/opencv_test_core
注意:若目标主机对库的大小比较敏感(如Android系统中),可以使用install/strip命令来获得尽可能小的库文件(被剥离的版本看起来要小两倍)。但是,不建议这样使用。