龙空技术网

编译安装OpenCV全攻略,附本地源码包

优智 94

前言:

而今小伙伴们对“opencvpython安装”大概比较珍视,大家都想要了解一些“opencvpython安装”的相关内容。那么小编在网络上收集了一些关于“opencvpython安装””的相关内容,希望兄弟们能喜欢,姐妹们快快来了解一下吧!

本文以Ubuntu(适用于18,20,22版本,其他的未进行测试)为例,介绍了编译安装OpenCV的最佳实践。其他平台比如windows,只需要参考本文的思路做稍微调整即可。

一、为什么需要编译安装OpenCV

如果没有特别的要求,采用命令行方式,就可以快速的进行OpenCV的安装。

sudo apt-get install libopencv-devsudo apt-get install python3-opencv sudo apt-get install libopencv-contrib-dev

采用pip方式安装脚本如下

pip install opencv-python opencv-contrib-python -i 

这样安装的OpenCV基本可以满足一般的开发需求,但是也存在以下的不足:

(1)安装的OpenCV不是最新的版本,尤其是contrib版本变化很快,部分最新的功能(有些新的背景提取,跟踪算法)会有所缺失。

(2)没有CUDA加速支持。

(3)如果apt不支持特定的CPU(比如arm)或者操作系统,就只能编译安装了。

如果我们的开发正好需要以上能力,建议通过源码编译方式安装。

二、OpenCV+CUDA有什么用处

OpenCV支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下:

图像背景分割视频编解码特征2D卷积滤波图像处理对象检测光流双目视觉...

在程序中调用CUDA也比较简单,这里先看看示例代码,基本上和在CPU上的图形操作函数类似,只是使用了CUDA模块内的函数。关于OpenCV+CUDA以后会专门展开进行说明

Size mosaicSize(100, 100);                     // 调整后的大小cv::cuda::resize(GpuFrame, GpuFrame, mosaicSize, 1, 0, 0); // 使用CUDA缩放图片

如果代码中没有cuda支持的需要,就没必要安装cuda模块了。

三、踩坑点

(1)不要在conda环境下编译安装

由于conda环境修改了部分环境变量,编译安装OpenCV过程中,经常发生冲突,我踩了不少坑,才发现这个问题。切记切记,不要在conda环境下编译安装如果已经安装了conda,建议将 ~/.bashrc文件中以下内容注释。

gedit ~/.bashrc

注释以下内容

# >>> conda initialize >>># !! Contents within this block are managed by 'conda init' !!__conda_setup="$('/home/chen/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"if [ $? -eq 0 ]; then    eval "$__conda_setup"else    if [ -f "/home/chen/anaconda3/etc/profile.d/conda.sh" ]; then        . "/home/chen/anaconda3/etc/profile.d/conda.sh"    else        export PATH="/home/chen/anaconda3/bin:$PATH"    fifiunset __conda_setup# <<< conda initialize <<<

(2)需要从git上下载部分文件和模型

使用源码编译过程中,有些模块需要从git下载部分模型和一系列文件,由于网络的原因,这些下载基本都会超时,导致编译失败。

我在这里提供一个已经打包好的OpenCV4.8包,包括了源码和下载文件。直接按照后面的安装脚本步骤一步一步执行就可以了。无需联网下载文件。

共享链接:

提取码: kugj

OpenCV安装包下载链接

本共享长期有效。如果失效,烦请留言或者私信,重新发送地址。

四、保姆级编译安装步骤

(1)创建OpenCV4.8目录(可以是别的名字,不要包括中文),在该目录中,将百度网盘下载的OpenCV源码(包括opencv.zip和opencv_contrib.zip)分别解压到各自目录中。cmake.txt是cmake的命令行,可以下载后作为参考。

(2)在OpenCV4.8目录中创建一个build目录。创建后的目录结构如下。以后的所有操作都在build目录中进行!!!

目录结构

(3)安装依赖文件

我是都安装了。假如自己了解各个模块的作用,可以进行取舍。根据自己的情况少装,或者不装部分包。

sudo apt install make gcc cmake build-essential sudo apt install libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-devsudo apt install ffmpeg

(4)cmake预编译

-D WITH_CUDA=1表示带CUDA的编译。其他的编译选项如果不是很了解,可以不用动。

cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules -D WITH_CUDA=1 -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 -D OPENCV_GENERATE_PKGCONFIG=1 ../opencv

(5)make编译

-j8表示用8个线程编译,可以根据CPU能力改为-j4,-j16等等。根据机器情况不同,编译大约需要1-2个小时

编译过程如果有需要,可以随时用ctrl+C中断,然后重新执行make命令,编译工作从中断的地方继续,不会有任何影响。

make -j8

(6)安装编译文件

将编译后的文件安装在 CMAKE_INSTALL_PREFIX 指定的目录中

sudo make install

(7)大功告成。

标签: #opencvpython安装