OpenCV源码编译
官方安装教程:
OpenCV installation overview
安装版本: 4.5.4
一、windows
1、环境
System: window10
CMake: 3.18.5
git: 2.23.0
visual studio: 2019
python: 3.6.5
opencv: 4.5.4 (No CUDA)
2、源码下载
源码地址: https://github.com/opencv/opencv
-
下载
git clone git@github.com:opencv/opencv.git
-
加速
如果网速不好,可以用以下地址git clone https://github.91chi.fun/https://github.com/opencv/opencv.git
-
选择版本
查看所有版本git tag
切换到指定版本
git checkout 4.5.4
3、源码编译
-
打开CMake(cmake-gui)
source
选择opencv
源码所在路径
build
选择在源码中新建的build目录
点击Configure
, 选择Visual Studio 16 2019
该过程ffpmeg
和ippicv
可能下载不下来,出现错误,可参考ffpmeg 和 ippicv库下载问题
勾选build_opencv_world
,后续生成会打包到一个库,处理完ffpmeg
和ippicv
库后重新点击Configure
点击Generate
-
打开build目录下OpenCV.sln
启动后选择Release
或者Debug
模式 以管理员方式打开VS2019
点击生成,生成解决方案 -
install
展开OpenCV
工程下CMakeTargets
目录
将INSTALL
设为启动项
点击生成,生成结果保存在build/install
目录下
4、ffpmeg 和 ippicv库下载问题
ffpmeg
库用于视频解码
FFmpeg是一个开源免费跨平台的视频和音频流方案,属于自由软件,采用LGPL或GPL许可证(依据你选择的组件),一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
ippicv,IPP-ICV 包由 OpenCV 库提供,支持的平台默认启用 IPP-ICV 优化,用户无需安装额外的独立英特尔的IPP 包。英特尔IPP软件构建块是经过高度优化的指令集(使用英特尔AVX、AVX2和SSE),它为图像处理和计算机视觉提供了一个特殊的功能子集。
- 解决方法
4.1、下载相应的文件
根据opencv/3rdparty/ffmpeg/ffmpeg.cmake
和opencv/3rdparty/ippicv/ippicv.cmake
中的下载地址及相应的hash
值确定文件下载链接
如: "https://raw.githubusercontent.com/opencv/opencv_3rdparty/a56b6ac6f030c312b2dce17430eef13aed9af274/ippicv/ippicv_2020_win_intel64_20191018_general.zip"
ffmpeg
ffmpeg_version.cmake opencv_videoio_ffmpeg.dll opencv_videoio_ffmpeg_64.dll
ippicv
879741a7946b814455eee6c6ffde2984-ippicv_2020_win_intel64_20191018_general.zip (不同版本和系统名称不一样)
4.2、存放下载文件
可以把下载的文件夹存放至opencv/.cache
目录下的ffmpeg
和ippicv
目录下,记得修改文件名为hash+filename
, 其中ffmpeg_version.cmake要右击页面另存为,直接复制内容到文件hash值会改变,然后重新编译(推荐)
或者修改opencv/3rdparty/ffmpeg/ffmpeg.cmake
和opencv/3rdparty/ippicv/ippicv.cmake
中下载路径的URL
为下载后存放的路径
二、Linux
1、安装相关依赖
最小依赖如下
sudo apt update
sudo apt install -y cmake g++ wget unzip
sudo apt-get install build-essential pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
其他相关依赖可参考install-opencv
# 2. INSTALL THE DEPENDENCIES
# Build tools:
sudo apt-get install -y build-essential cmake
# GUI (if you want GTK, change 'qt5-default' to 'libgtkglext1-dev' and remove '-DWITH_QT=ON'):
sudo apt-get install -y qt5-default libvtk6-dev
# Media I/O:
sudo apt-get install -y zlib1g-dev libjpeg-dev libwebp-dev libpng-dev libtiff5-dev libjasper-dev \
libopenexr-dev libgdal-dev
# Video I/O:
sudo apt-get install -y libdc1394-22-dev libavcodec-dev libavformat-dev libswscale-dev \
libtheora-dev libvorbis-dev libxvidcore-dev libx264-dev yasm \
libopencore-amrnb-dev libopencore-amrwb-dev libv4l-dev libxine2-dev
# Parallelism and linear algebra libraries:
sudo apt-get install -y libtbb-dev libeigen3-dev
# Python:
sudo apt-get install -y python-dev python-tk pylint python-numpy \
python3-dev python3-tk pylint3 python3-numpy flake8
# Java:
sudo apt-get install -y ant default-jdk
# Documentation and other:
sudo apt-get install -y doxygen unzip wget
2、获取源码
和windows一样,可跳转至源码
3、编译源码
- 先在opencv目录下新建build文件夹,然后编译
cd opencv
mkdir opencv
cd opencv
- 构建
默认直接cmake ..
即可,如果要设置其他选项,则在cmake
后面添加,如:
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_QT=OFF \
-D WITH_CUDA=OFF \
-D WITH_OPENGL=ON ..
CMAKE_BUILD_TYPE指定编译类型,可选项为DEBUG和RELEASE;CMAKE_INSTALL_PREFIX指定库的安装路径;OPENCV_EXTRA_MODULES_PATH指定opencv_contrib里面的modules文件夹的路径;WITH_CUDA是是否启用CUDA支持,可选项为ON和OFF。
- 编译
构建(cmake 命令)没有错误后,执行make
,-j
后面的数字表示同时几个进程
make -j4
4、安装
如果编译过程中未指定安装路径,则默认安装在/usr/local
,具体文件如下:
/usr/local/bin : 可执行文件
/usr/local/lib : 库文件
/usr/local/cmake/opencv4 : cmake包
/usr/local/include/opencv4 : 头文件
/usr/local/share/opencv4 : 其他文件
sudo make install