【已解决】opencv 交叉编译 ffmpeg选项始终为NO

news2024/11/26 11:43:47

一、opencv 交叉编译没有 ffmpeg ,会导致视频打不开

在交叉编译时候,发现在 pc 端能用 opencv 打开的视频,但是在 rv1126 上打不开。在网上查了很久,原因可能是 交叉编译过程 ffmpeg 造成的。之前 ffmpeg 是直接用 apt 安装的,opencv 编译也是直接用 Cmake 命令行进行的。

网上特别推荐用命令行进行编译,但是本次交叉编译,我发现使用 CMake-gui 进行编译,能更好地找出错误,因为不管是警告还是错误,CMake-gui 都会用红字来表示。

解决opencv源代码编译找不到ffmpeg-CSDN博客

二、准备工作

创建一个目录:/opt/software,把 opencv4.5.5、x264、ffmpeg-4.x 都下载到该目录

再创建一个目录:/opt/out-arm,用作 x264、ffmpeg的安装目录

三、交叉编译x264

opencv交叉编译静态库,支持ffmpeg、libjpeg,实现取流及写入jpeg文件_交叉编译 生成静态库_程序员阿周的博客-CSDN博客

1、解压源码并且进入源码目录
2、编译动态库,目的是编译ffmpeg使用,命令如下:
#./configure --prefix=/opt/software/opencv --host=arm-linux --cross-prefix=arm-linux-gnueabihf- --disable-asm --enable-shared
#make -j6
#make install
3、编译静态库,目的是最后我们的应用程序链接使用,命令如下:
#./configure --prefix=/home/cxyazhou/work/opencv --host=arm-linux --cross-prefix=arm-linux-gnueabihf- --disable-asm
#make clean;make -j6
#make install

注意:静态库编译时,make install只会拷贝bin下的文件到install目录,所以这里需要手动拷贝头文件、静态库到install目录,基于上面已经编译了动态库,会自动拷贝头文件,这里我们只要拷贝静态库到install的lib目录就可以:

#cp libx264.a /opt/out-arm/lib/

四、交叉编译 ffmpeg

opencv交叉编译静态库,支持ffmpeg、libjpeg,实现取流及写入jpeg文件_交叉编译 生成静态库_程序员阿周的博客-CSDN博客

0、配置下环境变量,防止编译 ffmpeg 时候找不到 x264库

ffmpeg 编译问题记录-CSDN博客

#export PKG_CONFIG_PATH=/opt/out_arm/lib/pkgconfig/

1、解压源码并且进入源码目录
2、编译静态库,命令如下:
#./configure --cross-prefix=arm-linux-gnueabihf- --enable-cross-compile --target-os=linux --cc=arm-linux-gnueabihf-gcc --arch=arm64 --prefix=/opt/out-arm --enable-ffmpeg --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-asm --enable-swscale --enable-avresample --enable-gpl --enable-libx264 --extra-cflags=-I/opt/out-arm/include --extra-ldflags=-L/opt/out-arm/lib
#make -j6
#make install

五、交叉编译 OpenCV

opencv交叉编译包含ffmpeg_交叉编译 opencv ffmepg_思而后行之的博客-CSDN博客

Configure 前工作

按照上述块引用中的博客来,另外我还通过 Add Entry 指定了安装目录:

docker 容器中 /mnt 目录 会映射整个开发板

Configure

Configure 过程中的一些 Warning 不用太在意,只要 Configure 能完成就行:

检查 Configure 结果,FFMPEG 为 YES ,欧耶:

Generate

Generate 在上面的博客中没有报错,但是我这里报错:

CMake Error in modules/videoio/CMakeLists.txt:
  Imported target "ocv.3rdparty.ffmpeg" includes non-existent path

    "/mnt/opt/software/opencv/include"

  in its INTERFACE_INCLUDE_DIRECTORIES.  Possible reasons include:

  * The path was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and references files it does not
  provide.

解决方法是把 x264、 ffmpeg库的安装目录下的 include 文件夹的内容 copy 过去

# copy /opt/out-arm/include/*     /mnt/opt/software/opencv/include -r

在构建目录下执行的工作

Generate 完成后,关闭 cmkae-gui,回到构建目录,执行:

# make -j8

# make install

安装完毕:

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

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

相关文章

LeetCode 周赛上分之旅 #49 再探内向基环树

⭐️ 本文已收录到 AndroidFamily,技术和职场问题,请关注公众号 [彭旭锐] 和 BaguTree Pro 知识星球提问。 学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度…

1300*C. Coin Rows(枚举模拟)

解析: 两人都绝对聪明,Alice先走,尽量让Bob所能拿的分数最少,Alice有一次往下走的机会,剩余没走过的点正好分为两断断开的区域,所以Bob的最大分数要么在第一格向下或者在最后一列向下。 遍历区间&#xff0…

笔训day2

选择题 1、输出格式 此题与昨天的题类似,有“-”号时是左对齐,%-m.n m表示宽度,n表示左起取n位数。 2、常量指针和指针常量 //两种都是常量指针 const int *p1; int const *p2; //指针常量 int* const p3 3、字符数组和字符指针 4、函数…

国庆节看这里,有你意想不到的收货!(建议收藏)

计算机视觉研究院专栏 作者:Edison_G “国庆长假,每个人都安耐不住了,但是,在你静心、游玩的时候,还是可以阅读今天的分享,干货满满! 公众号ID|ComputerVisionGzq 学习群&#xff5c…

基于SSM的医院住院综合服务管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

数据结构与算法(C语言版)P9---哈夫曼树

1、哈夫曼树的基本概念 (1)路径:从树中一个结点到另一个结点之间的__分支__构成这两个结点间的路径。 (2)__结点的路径长度:__两结点间路径上的分支树。 练习:计算下面二叉树结点之间的路径长…

1.7.C++项目:仿muduo库实现并发服务器之Poller模块的设计

项目完整在: 文章目录 一、Poller模块:描述符IO事件监控模块二、提供的功能三、实现思想(一)功能(二)意义(三)功能设计 四、封装思想五、代码(一)框架&#…

基于微信小程序的懒人美食帮外卖订餐设计与实现(亮点:多角色的订餐系统、最贴近现实的小程序)

文章目录 前言系统主要功能:具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

CH347读取MPU6050传感器数据和显示

MPU6050 是一款集成了六轴加速度计和陀螺仪的微电子机械系统(MEMS)传感器。它由 InvenSense(现为 TDK) 公司开发,是一种广泛应用于姿态估计、运动追踪和稳定控制等领域的常用传感器。 MPU6050 具有以下主要特点和技术…

1、【开始】【简介】Qlib:量化平台

【简介】1、Qlib:量化平台 简介框架简介 Qlib是一个面向AI的量化投资平台,旨在实现AI技术在量化投资中的潜力,赋能研究,并创造价值。 通过Qlib,用户可以轻松利用他们的想法来创建更好的量化投资策略。 框架 在模块层,Qlib 是由上述组件组成的平台。这些组件被设计为低耦…

ssm+vue的图书管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的图书管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring Spr…

正点原子嵌入式linux驱动开发——TF-A移植

经过了之前的学习,除了TF-A的详细启动流程仍待更新,TF-A的使用和其对应的大致启动流程已经进行过了学习。但是当我们实际做产品时,硬件平台肯定会和ST官方的有区别,比如DDR容量会改变,自己的硬件没有使用到官方EVK开发…

1.HTML-标题排版

1.Vscode快速生成基本代码结构 !enter <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" conte…

Acwing 908. 最大不相交区间数量

Acwing 908. 最大不相交区间数量 知识点题目描述思路讲解代码展示 知识点 贪心 题目描述 思路讲解 代码展示 #include <iostream> #include <algorithm>using namespace std;const int N 100010;int n;struct Range {int l, r;bool operator<(const Range …

【爬虫】用wget命令爬虫的简易教程

文章目录 1. 获取登录的请求2. 用postman模拟登录请求3. 用wget模拟登录请求并保存cookie4. 开始爬取网站5. 查看爬取结果6. 网站爬虫简易教程 爬取需要登录的网站的资源 背景&#xff1a;对于一些网站需要使用用户名和密码登录并且使用了https&#xff0c;我们如果不通过凭证将…

Arcgis提取玉米种植地分布,并以此为掩膜提取遥感影像

Arcgis提取玉米种植地分布上&#xff0c;并以此为掩膜提取遥感影像 一、问题描述 因为之前反演是整个研究区&#xff0c;然而土地利用类型有很多类&#xff0c;只在农田或者植被上进行反演&#xff0c;需要去除水体、建筑等其他类型&#xff0c;如何处理得到下图中只有耕地类…

世界前沿技术发展报告2023《世界信息技术发展报告》(六)网络与通信技术

&#xff08;六&#xff09;网络与通信技术 1. 概述2. 5G与光通讯2.1 美国研究人员利用电磁拓扑绝缘体使5G频谱带宽翻倍2.2 日本东京工业大学推出可接入5G网络的高频收发器2.3 美国得克萨斯农工大学通过波束管理改进5G毫米波通信2.4 联发科完成全球首次5G NTN卫星手机连线测试2…

springmvc-国际化中英文切换文件上传下载

1. 国际化 1.1 介绍 国际化(internationalization)&#xff0c; 简称国际化。一个产品支持国际化是指产品在无需做大的改变就能够适应不同的语言和地区的能力。i18n是指是一种让软件在开发阶段就支持多种语言的技术。 1.2 java.util.Locale 该类对象表示了特定的地理&#…

【算法学习】-【双指针】-【复写零】

LeetCode原题链接&#xff1a;1089. 复写零 下面是题目描述&#xff1a; 给你一个长度固定的整数数组 arr &#xff0c;请你将该数组中出现的每个零都复写一遍&#xff0c;并将其余的元素向右平移。 注意&#xff1a;请不要在超过该数组长度的位置写入元素。请对输入的数组 …

【word】从正文开始设置页码

在写报告的时候&#xff0c;会要求有封面和目录&#xff0c;各占一页。正文从第3页开始&#xff0c;页码从正文开始设置 word是新建的 分出三节&#xff08;封面、目录、正文&#xff09; 布局--->分割符--->分节符--->下一页 这样就能将word分为3节&#xff0c;分…