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.rhkb.cn/news/349281.html

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

相关文章

【自动部署】4.阿里云ECS服务器 IDEA自动部署项目

如何在IDEA中,自动部署项目到阿里云ECS服务器?今天我们就来实现一键部署功能。 执行maven命令打包免密登录,在IEDA中连接服务器执行stop脚本上传jar包到服务器执行start脚本查看运行日志 1.安装Alibaba Cloud Toolkit 2.配置host 3.自动化部…

智能合约漏洞类型

Are We There Yet? Unraveling the State-of-the-Art Smart Contract Fuzzers | Proceedings of the IEEE/ACM 46th International Conference on Software Engineering

HTML静态网页成品作业(HTML+CSS)—— 家乡山西介绍网页(3个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有6个页面。 二、作品演示 三、代…

【嵌入式DIY实例】-Nokia 5110显示DHT11/DHT22传感器数据

Nokia 5110显示DHT11/DHT22传感器数据 文章目录 Nokia 5110显示DHT11/DHT22传感器数据1、硬件准备2、代码实现2.1 显示DHT11数据2.2 显示DHT22数据本文介绍如何将 ESP8266 NodeMCU 开发板 (ESP-12E) 与 DHT11 数字湿度和温度传感器以及诺基亚 5110 LCD 连接。 NodeMCU 从 DHT11…

AI绘画SD下载安装教程,学习AI绘画软件必看(SD怎么安装,SD安装教程,安装stable diffusion软件必看)

大家好,我是设计师阿威 最近很火很有趋势的便是AI人工智能了,提到AI大家肯定都不陌生(AIGC)大家也很熟知,但是要问应用的工具有哪些肯定很多人说不出来几个,但是比较厉害的就是大众所认识的SD-stable diff…

【学习笔记】MySQL(Ⅱ)

MySQL(Ⅱ) 7、 进阶篇 —— 存储引擎 7.1、MySQL 体系结构 7.2、存储引擎 7.2.1 InnoDB 7.2.2 MyISAM 7.2.3 Memory 7.2.4 InnoDB、MyISAM、Memory 的比较8、 拓展篇 —— 在 Linux 上安装数据库9、进阶篇 —— 索引 …

【产品经理】ERP对接电商平台

电商ERP对接上游平台,会需要经历几个步骤环节,包括店铺设置等。 电商ERP对接上游电商平台,其主要设置为店铺设置、商品同步、库存同步,本次讲解下店铺设置应该如何进行设置,以及在设置过程中的可能出现的踩坑事项。 …

Ubuntu server 24 (Linux) Zabbix 7.0 LTS 配置mail邮件报警

1 告警--媒介 选择右边默认模板修改 2 用户设置--配置--报警媒介 3 告警--动作--触发器动作 #测试 sudo systemctl stop zabbix-agent 本文使用postfix自建邮件服务器,如有需要请看

Mysql 的分布式策略

1. 前言 MySQL 作为最最常用的数据库,了解 Mysql 的分布式策略对于掌握 MySQL 的高性能使用方法和更安全的储存方式有非常重要的作用。 它同时也是面试中最最常问的考点,我们这里就简单总结下 Mysq 的常用分布式策略。 2. 复制 复制主要有主主复制和…

跟卖五种常用采集方式,关键词采集升级,更加让新手上手更快!

今天给大家分享一个跟卖选品软件,相信很多卖家都在为选品而苦恼,人工筛选一天也筛选不出几个能用的链接,不仅耗费时间精力,还提升不了选品效率,今天就分享一款实用的选品工具,它能够帮助我们节省选品时间&a…

CD工具awx之通知NOTIFICATIONS,及时发送消息到企业微信机器人

一、背景 awx的模板执行结果及时通知给相关人员,可以直接在awx界面上配置通知,然后由项目和模板来决定是否开启通知。 通知类型一般选择webhook,消息体的拼接,则需要参考awx官方文档。 除了在awx界面上配置通知外,也…

第五讲:51单片机+RA8889驱动控制彩屏 完整源码说明 【 源码v1.2 】

51单片机驱动控制彩屏系列讲座 第一讲:单片机STC89C52RA8889驱动控制彩屏【 源码v1.0 】 第二讲:单片机STC89C52RA8889驱动控制彩屏 代码移植介绍 第三讲:单片机STC89C52RA8889驱动控制彩屏 代码的压缩(Keil编译器) 第…

读Diffusion models from scratch, from a new theoretical perspective

1 Introduction diffusion model 在多个领域有了突破,这篇文章从优化的角度来介绍diffusion,包括理论和代码。 2 Training diffusion models diffusion 的样本集可以对应图像,音频,视频,机械臂轨迹,甚至…

HTTP 概述

HTTP 概述 HTTP 是一种用于获取资源(如 HTML 文档)的协议。 它是 Web 上任何数据交换的基础,它是一种客户端-服务器协议,这意味着请求由接收方(通常是 Web 浏览器)发起。 一个完整的文档是从获取的不同子文…

使用 Azure AI Document Intelligence 创建智能文档处理

简介 借助 Azure AI 文档智能中的预生成模型,无需自行训练模型,即可从常见表单和文档中提取数据。 公司中,表单种类繁多,如发票、收据、调查表等。你可能想知道,从这些文档中提取姓名、地址、金额等信息需要多少工作…

如何将NextJs中的File docx保存到Prisma ORM

背景/引言 在现代 Web 开发中,Next.js 是一个备受欢迎的 React 框架,它具有许多优点,如: 服务器端渲染 (SSR):Next.js 支持服务器端渲染,可以提高页面加载速度,改善 SEO,并提供更好…

Introducing Index-1.9B

简介 大家好,今天我们很高兴首次发布Index系列模型中的轻量版本:Index-1.9B系列 本次开源的Index-1.9B 系列包含以下模型: Index-1.9B base : 基座模型,具有 19亿 非词嵌入参数量,在2.8T 中英文为主的语料上预训练&…

小程序面试题全(offer直接给他拿下)

各位小伙伴们,好久不见,突然想起来微信小程序没有给大家整一份面经,废话不多说,开干! 1.wxml和html有什么区别 ①使用标签不同。 ②wxml提供了和vue.js中模版语法类似的模版语法,而html没有。 ③html在…

期末测试2(1)---PTA

一开始写错了, 因为这个再定义一个和原函数一样类型的进行存储, 然后将第一个设置为最大的,依次用循环比较后面的, 最后输出 但是这个适用于找最大的、字符串这样最后只输出一个最大项比较好 对于结构体不好将比较的这个数所…

大数据同步方案怎么选,才能提高企业的业务效率?

大数据同步通常指的是在多个数据源或存储系统之间同步数据的过程,可以确保数据的一致性,提高数据的可用性和可靠性,同时支持数据分析和决策制定。 大数据同步的步骤通常包括: 数据识别:确定需要同步的数据类型和范围&…