ubuntu下使用cmake编译opencv4.8.0+ffmpeg4.2.2+cuda11.1

1.源码下载

(1)下载ffmpeg4.2.2、opencv4.8.0源码,这里提供一个百度网盘地址:

链接:https://pan.baidu.com/s/1pBksr0_RtKL0cM6Gsf2MGA?pwd=cyai
提取码:cyai

(2)解压所有文件
例如解压到cytech_ai/env/opencv_build文件夹下:
unzip opencv-4.8.0.zip
unzip opencv_contrib-4.8.0.zip
tar -xf ffmpeg_4.2.2.orig.tar
目录如下:
在这里插入图片描述
在这里插入图片描述

2.ffmpeg编译

进入ffmpeg-4.2.2文件夹下,并输入一下命令:

cd /cytech_ai/env/opencv_build/ffmpeg-4.2.2
./configure --enable-shared --enable-avresample --disable-x86asm --prefix=/usr/local/ffmpeg

使用make进行编译:

make -j32
make install

编译完成后,编译后的文件保存在:/usr/local/ffmpeg目录下,并将bin和lib目录添加到对应的文件中。

vim /etc/ld.so.conf

在文件中添加ffmpeg的lib文件夹
在这里插入图片描述
终端执行:

ldconfig

编辑环境变量:

vim /etc/profile
#在文件末尾追加一行:
export PATH=/usr/local/ffmpeg/bin:$PATH
#执行保存
source /etc/profile

在终端输入:

ffmpeg -version

在这里插入图片描述
表示安装成功,并打印版本信息

3.编译opencv

(1)在opencv-4.8.0文件夹下新建一个build文件夹,并执行cmake命令:

cd /cytech_ai/env/opencv_build/opencv-4.8.0
mkdir build && cd build

执行完成后,填写cmake命令:

cmake  -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/cytech_ai/env/opencv480gpu -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.8.0/modules -DWITH_GTK=OFF -DWITH_CUDA=ON -DWITH_CUDNN=ON -DWITH_TBB=ON -DOPENCV_DNN_CUDA=ON -DENABLE_FAST_MATH=1 -DCUDA_FAST_MATH=1 -DWITH_CUBLAS=1 -DOPENCV_ENABLE_NONFREE=ON   -DBUILD_CUDA_STUBS=ON  -DBUILD_opencv_world=ON -DWITH_FFMPEG=ON ..

-DCMAKE_INSTALL_PREFIX:表示编译后make install的位置
-DOPENCV_EXTRA_MODULES_PATH:表示cuda相关的第三方文件
-DBUILD_opencv_world=ON:表示最终只编译得到一个opencv_world.so文件,方便后续链接和移动库,建议编成一个。
-DWITH_FFMPEG:表示打开ffmpeg,便于后续使用rtsp和读取视频文件videocapture使用。
其他的一些cuda,cudnn和加速的算子都打开就行。

当显示:
在这里插入图片描述
ffmpeg为YES时,表示找到了前面编译的ffmpeg,直接make即可:

make -j32 && make install

编译时间较长,等待编译完成即可在/cytech_ai/env/opencv480gpu文件夹下找到编译后的库
make 过程:
在这里插入图片描述
make install过程:
在这里插入图片描述
编译完成:
在这里插入图片描述

4.常见问题:

(1)ubuntu下编译带opencv ffmpeg显示NO

在这里插入图片描述
编译的时候,系统一直找不到ffmpeg,一直显示为NO,主要原因是编译的位置没有添加环境变量,最好就编译在usr/local下,目前是测过的了,其他位置确实会出现找不到的情况:

vim /etc/profile

在文件末尾添加:

export PATH=/usr/local/ffmpeg/bin:$PATH

:wq保存退出,并执行修改后的环境变量:

source /etc/profile

(2)ffmpeg文件夹下执行configure失败,报错nasm/yasm not found

报错详细信息:

nasm/yasm not found or too old. Use --disable-x86asm for a crippled build.

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

在这里插入图片描述
在命令中添加–disable-x86asm 取消优化即可,也可以apt install nasm,再使用该命令

./configure --enable-shared --enable-avresample --prefix=/usr/
#改为
./configure --enable-shared --enable-avresample --disable-x86asm --prefix=/usr/local/ffmpeg

(3)ubuntu下apt install 安装文件显示无法定位软件包:

直接运行下面的代码,再次尝试即可:

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update

(4)不编译cuda,直接编译cpu版本的

去掉需要使用cuda的命令:

cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_INSTALL_PREFIX=/cytech_ai/env/opencv480cpu/ -DOPENCV_ENABLE_NONFREE=ON -DBUILD_OPENCV_WORLD=ON -DWITH_FFMPEG=ON ..

5.参考

1.https://blog.csdn.net/jiexijihe945/article/details/125070402
2.https://blog.csdn.net/Damon_Sandy/article/details/131995799
3.https://blog.csdn.net/weixin_48896613/article/details/124415754
4.https://launchpad.net/ubuntu/+source/ffmpeg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值