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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/851981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

okHttp的https请求忽略ssl证书认证

使用okhttp请求第三方https接口返回异常 sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target意思就是非安全的调用&#…

我的高考往事

高考对于每一个参加过的人来说,都是一段非常难忘的回忆。 我参加高考,是在2001年。虽然迄今已经过去了23年,但很多细节仍然记忆犹新。 今天这篇文章,我就和大家分享一下,我的高考往事。 █ 青少年时代 我的老家是在江西…

开个技术外挂 | 数字孪生技术如何成为美洲杯帆船赛成功的关键?

若您对数据分析以及人工智能感兴趣,欢迎与我们一起站在全球视野关注人工智能的发展,与Forrester 、德勤、麦肯锡等全球知名企业共探AI如何加速工业变革,共享众多优秀行业案例,开启AI人工智能全球新视野!! …

Ubuntu Server 20.04挂载磁盘

先查看磁盘信息: sudo fdisk -l然后提供NTFS文件系统支持: sudo mkfs.ntfs /dec/sda -F这个过程非常久… 处理完如上图。(ps. 这个 Have a nice day. 好浪漫~) 接着挂载磁盘: sudo mount /dev/sda ~/device设置开机…

计算机网络(4) 最长前缀匹配(路由转发表)

一.路由转发 网络数据包IP段只包含源地址与目的地址,经过数据链路层包装与物理层信号形式转换,最终经由不同的链路节点到达目的地址。这个过程是一步一步(hop by hop)进行的,路过一个路由节点则称为一跳。每个路由节点…

会声会影2023软件:安装包下载 丨不限速下载丨亲测好用

会声会影(Corel VideoStudio)为加拿大Corel公司发布的一款功能丰富的视频编辑软件。 会声会影2023简单易用,具有史无前例的强大功能,拖放式标题、转场、覆叠和滤镜,色彩分级、动态分屏视频和新增强的遮罩创建器,超越基本编辑&…

JavaScript的函数(几种函数的定义和使用)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

实时数据的处理一致性如何保证?

实时数据一致性的定义以及面临的挑战 数据一致性通常指的是数据在整个系统或多个系统中保持准确、可靠和同步的状态。在实时数据处理中,一致性包括但不限于数据的准确性、完整性、时效性和顺序性。 下图是典型的实时/流式数据处理的流程: 流式数据以各…

如何理解分类任务中的logits?

在分类任务中,logits 是模型输出的原始分数,通常是在通过模型的最后一个全连接层之后但在激活函数(如 softmax)之前获得的。它们代表每个类别的未归一化得分或信心度。理解 logits 的过程可以分为以下几个步骤: 模型的…

大前端技术分类

1 基础 2 语言 3 类库 4 框架 5 跨栈 6 架构 7 领域 7.1 中后台 7.2 跨平台 7.3 可视化 7.4 智能化 7.5 工程化 7.5.1 规范化 7.5.2 流程化 —— 前端工程化工具系列 7.5.3 模板化 7.5.4 自动化 7.5.5 平台化 7.6 其他 7.6.1 音视频 7.6.2 Web3 7.6.3 区块…

统信UOS屏蔽mysql显性的用户名称以及密码

有的时候我操作数据库的脚本语句为 > mysql -u用户名 -p密码 -D数据库名称 -e"sql语句" 这样展示的话,会暴漏我的用户名称和用户密码 如果不想每次都展示用户名和密码的话需要以下操作 创建.my.cnf 文件 可以在用户的主目录下创建或编辑 .my.cnf 文件…

搜索二叉树的概念及实现

搜索二叉树的概念 搜索二叉树规则(左小右大): 非空左子树的键值小于其根节点的键值非空右子树的键值大于其根节点的键值左右子树均为搜索二叉树 如图: 在搜索时,若大于根,则去右子树寻找;若小…

Python:基础爬虫

Python爬虫学习(网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字…

flask实现抽奖程序(一)

后端代码E:\LearningProject\lottery\app.py from flask import Flask, render_template import randomapp Flask(__name__)employees [赵一, 钱二, 孙三, 李四, 周五, 吴六, 郑七, 王八]app.route(/) def hello_world():return render_template(index.html, employeesemplo…

企业多云策略的优势与实施指南

企业在选择云服务提供商时,常见的选项包括亚马逊AWS、微软Azure、谷歌云GCP、阿里云、腾讯云和华为云。为了避免过度依赖单一供应商,许多企业选择采用多云策略,这样可以充分利用不同云服务的优势,同时避免重复工作和其他额外的工作…

每天五分钟计算机视觉:如何在现有经典的卷积神经网络上进行微调

本文重点 在深度学习领域,卷积神经网络(Convolutional Neural Networks,CNN)因其强大的特征提取和分类能力而广泛应用于图像识别、自然语言处理等多个领域。然而,从头开始训练一个CNN模型往往需要大量的数据和计算资源,且训练时间较长。幸运的是,迁移学习(Transfer Le…

postgresql中geometry类型数据迁移

postgresql中geometry类型数据迁移 在PostgreSQL中,如果你需要从一个PostGIS扩展支持的数据库迁移到另一个,并且你想要迁移geometry类型的数据,你可以使用以下步骤: 在目标数据库中创建与源数据库相同结构的表。 使用ST_GeomFromText或ST_GeomFromWKB函数将源数据库中的…

git如果将多次提交压缩成一次

将N个提交压缩到单个提交中有两种方式: git reset git reset的本意是版本回退,回退时可以选择保留commit提交。我们基于git reset的作用,结合新建分支,可以实现多次commit提交的合并。这个不需要vim编辑,很少有冲突。…

服务器每次登陆都需要source .bashrc才能使用conda的问题[已解决]

1. 如果当前文件夹中没有.bash_profile文件,则创建该文件并填入下列信息:(如果有该文件,则直接添加下列代码) if [ -f ~/.bashrc ]; then . ~/.bashrc; fi2. 执行命令 source .bash_profile3. 重新登陆服务器&#x…

WEB基础--TOMCAT服务器

服务器概述 什么是服务器 服务器:就是一个提供为人民服务的机器,这里的服务器主要指计算机服务器,分为两种:服务器软件和硬件服务器; 服务器分类 1、硬件服务器:安装了服务器软件的主机。就相当于高配的…