C/C++教程

OpenCV源码编译

本文主要是介绍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 该过程ffpmegippicv可能下载不下来,出现错误,可参考ffpmeg 和 ippicv库下载问题
    勾选build_opencv_world,后续生成会打包到一个库,处理完ffpmegippicv库后重新点击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.cmakeopencv/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目录下的ffmpegippicv目录下,记得修改文件名为hash+filename, 其中ffmpeg_version.cmake要右击页面另存为,直接复制内容到文件hash值会改变,然后重新编译(推荐
或者修改opencv/3rdparty/ffmpeg/ffmpeg.cmakeopencv/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源码编译的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!