OpenCV源码编译
2022/2/20 1:11:47
本文主要是介绍OpenCV源码编译,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
官方安装教程:
OpenCV installation overview
安装版本: 4.5.4
一、windows
Installation in 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
Installation in 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
这篇关于OpenCV源码编译的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28pyqt 怎么打包整个项目-icode9专业技术文章分享
- 2024-09-28laravel Commands 创建带有参数的 Artisan 命令的步骤和示例-icode9专业技术文章分享
- 2024-09-28antd怎么实现渲染tiff图片-icode9专业技术文章分享
- 2024-09-28英文半角中划线和中文全角的中划线有什么区别-icode9专业技术文章分享
- 2024-09-28nvm npm 和node 他们之间有什么关系-icode9专业技术文章分享
- 2024-09-28Node Version Manager (nvm)使用教程-icode9专业技术文章分享
- 2024-09-28nvm命令太慢,是什么原因-icode9专业技术文章分享
- 2024-09-28Kotlin 如何增加、删除和修改 MutableStateFlow 中的值。-icode9专业技术文章分享
- 2024-09-28Kotlin的stateFlow.update 写法介绍-icode9专业技术文章分享
- 2024-09-28kotlin 怎么获取当前时间格式-icode9专业技术文章分享