一、下载 OpenCV
OpenCV 官网 : Download
选择版本 OpenCV4.5.5 ,点击 Sources 下载即可。
二、编译源码
如果需要安装第三方库 contrib ,则另外需要下载相同版本的 contrib。
下载地址: https://opencv.org/releases/
Step1: 将下载完成的 OpenCV4.5.5 Sources 包解压,得到文件夹 opencv-4.5.5。
Step2: 将下载完成的 opencv_contrib-4.5.5.tar.gz 包解压,并将解压出的文件夹 opencv_contrib-4.5.5 拷贝进文件夹 opencv-4.5.5 中。
Step3: 在文件夹 opencv-4.0.1 中创建文件夹 build,并进入 build 文件夹中。
配置 make
安装前如果还没装 g++的,还需要执行以下命令:
sudo apt-get install build-essential
这里注意了,我安装的时候还需要执行下面这个命令,不然会报错:If you are on Ubuntu or Debian, install libgtk2.0-dev and pkg-config, then re-run cmake or configure script in function ‘cvNamedWindow’
sudo apt-get install libgtk2.0-dev pkg-config
对了,安装过程中还会报:不能成功下载 FFmpeg 或 IPPICV
需要前往GitHub下载相应的库。
链接:https://github.com/opencv/opencv_3rdparty/branches/all
建议不要 clone 整个仓库,貌似比较大且慢。
具体用哪一分支可用根据 cmake 文件(opencv/3rdparty/)进行获取。
FFmpeg 对应的位置在 path to opencv/3rdparty/ffmpeg/ffmpeg.cmake
在第 1 行可以找到所需要下载的分支名,即 Binaries branch name: ffmpeg/master_20200908
在第 3 行可以找到对应提交记录的哈希值,即 6152e132572dfdaa32887eabeb7199bef49b14dc
文章最后,我会给出完整安装包,省得大家自己研究了。
ippicv 对应的位置在 path to opencv/3rdparty/ippicv/ippicv.cmake
在第 1 行可以找到所需要下载的分支名。可以通过 OPENCV_ICV_NAME 变量的定义 来获取,如:set(OPENCV_ICV_NAME “ippicv_2020_lnx_intel64_20191018_general.tgz”),其中的时间为 20191018,那么选对应的分支即可。
在第 17 行可以找到对应提交记录的哈希值,即7421de0095c7a39162ae13a6098782f9
复制库文件
将 ffmpeg 目录中的 相关文件复制到 ${OpenCV_BINARY_DIR}\opencv\3rdparty\ffmpeg 目录下。
将 ippicv 文件夹复制到 ${OpenCV_BINARY_DIR}\opencv\3rdparty\ippicv 目录下,ippicv 目录可能不存在,自己创建即可。ippicv 根据系统不同,可能为其它的名称,都在前面步骤中下载的文件中,解压即可。
将ippicv cmake文件中的下载地址替换为我们已下载的文件路径:file:///media/xz/BigData/3rdlibs/src/opencv-4.6.0/3rdparty/ippicv/ippicv/
最后还要修改下opencv的cmake 文件
在 CMake 中重新 Configure 即可。
在自己编译OpenCV时,因为种种原因可能会导致FFmpeg或ippicv下载不成功的问题,可以通过手动配置来解决这类问题,当然也可以直接配置之后再编译。
下面进入编译环节
在 build 文件夹中打开命令行,执行以下命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
如果上面的命令执行失败,则执行如下命令:
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
执行 make 命令进行编译
make -j 8
采用 8个进程加快编译速度(我这老电脑了,也只能8个进程,大家可根据自己硬件情况来),编译完成后进行安装:
sudo make install
三、报错解决
如报如下错误:
untime library [libssl.so.1.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/rw/anaconda3/lib
runtime library [libcrypto.so.1.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:
/home/rw/anaconda3/lib
则需修改编译方法为(注:有时需加上sudo):
sudo cmake -D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ -D CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Auto OPENCV_EXTRA_MODULES_PATH=../opencv/opencv_contrib/modules/ ..