opencv交叉编译,支持ffmpeg、libjpeg,实现取流及写入jpeg文件

news2024/11/13 11:27:52

一、准备工作
1、虚拟机+交叉编译连
2、在虚拟机目录下创建工作目录,注意不要选择windows共享目录,比如这里选择:
/home/cxyazhou/work
3、虚拟机安装cmake cmake-gui pkg-config,直接apt install即可
4、源码下载,需要x264、ffmpeg、libjpeg-turbo、opencv四个工程的源码,将其放在/home/cxyazhou/work目录下,如下:
x264-master.tar.bz2 FFmpeg-n4.3.6.zip libjpeg-turbo-2.1.91.tar.gz opencv-4.7.0.zip
5、创建install目录
mkdir /home/cxyazhou/work/opencv
二、编译x264
1、解压源码并且进入源码目录
2、编译动态库,目的是编译ffmpeg使用,命令如下:
#./configure --prefix=/home/cxyazhou/work/opencv --host=arm-linux --cross-prefix=arm-himix200-linux- --disable-asm --enable-shared
#make -j6
#make install
3、编译静态库,目的是最后我们的应用程序链接使用,命令如下:
#./configure --prefix=/home/cxyazhou/work/opencv --host=arm-linux --cross-prefix=arm-himix200-linux- --disable-asm
#make clean;make -j6
#make install
注意:静态库编译时,make install只会拷贝bin下的文件到install目录,所以这里需要手动拷贝头文件、静态库到install目录,基于上面已经编译了动态库,会自动拷贝头文件,这里我们只要拷贝静态库到install的lib目录就可以:
#cp libx264.a /home/cxyazhou/work/opencv/lib/
三、编译ffmpeg
1、解压源码并且进入源码目录
2、编译静态库,命令如下:
#./configure --cross-prefix=arm-himix200-linux- --enable-cross-compile --target-os=linux --cc=arm-himix200-linux-gcc --arch=arm64 --prefix=/home/cxyazhou/work/opencv --enable-ffmpeg --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-asm --enable-swscale --enable-avresample --enable-gpl --enable-libx264 --extra-cflags=-I/home/cxyazhou/work/opencv/include --extra-ldflags=-L/home/cxyazhou/work/opencv/lib
#make -j6
#make install
3、编译动态库记录(这里只是暂时记录动态库使用的问题,可跳过)
#./configure --cross-prefix=arm-himix200-linux- --enable-cross-compile --target-os=linux --cc=arm-himix200-linux-gcc --arch=arm64 --prefix=/home/cxyazhou/work/opencv --enable-ffmpeg --disable-armv5te --disable-armv6 --disable-armv6t2 --disable-asm --enable-swscale --enable-avresample --enable-gpl --enable-libx264 --extra-cflags=-I/home/cxyazhou/work/opencv/include --extra-ldflags=-L/home/cxyazhou/work/opencv/lib --enable-shared
#make -j6
#make install
问题:如果使用动态库,后面编译opencv的时候ffmpeg选项始终为no,首先是cmake测试ffmpeg是否可以成功编译时,返回不成功,打印如下:WARNING: Can’t build ffmpeg test code。然后使用cmake给的编译参数,我们自己去测试是否可以编译成功,结果也是不成功,原因是:ffmpeg的多个动态库有互相依赖,所以编译时找不到一些符号。解决办法:增加编译参数:-Wl,-rpath-link=/home/cxyazhou/work/opencv/lib。这样的话,我们自己编译就可以通过。所以如果想让cmake测试通过,也需要增加此参数,如何增加暂时未研究。
四、编译libjpeg-turbo
1、解压源码并且进入源码目录
2、运行cmake-gui
(1)、配置源码目录:/home/cxyazhou/work/libjpeg-turbo-2.1.91
(2)、编译目录:/home/cxyazhou/work/libjpeg-turbo-2.1.91_build
(3)、配置编译链
在这里插入图片描述
在这里插入图片描述
(4)、CMAKE_INSTALL_PRIFIX选择:/home/cxyazhou/work/opencv
(5)、BUILD_SHARED_LIBS去掉
(6)、点击Configure、Generate,然后退出
3、进入build目录,进行编译
#cd /home/cxyazhou/work/libjpeg-turbo-2.1.91_build
#make -j6
#make install
五、编译opencv
1、解压源码并且进入源码目录
2、设置pkg环境变量,目的是cmake编译opencv时,可以找到对应的依赖库,命令如下:
#export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/cxyazhou/work/opencv/lib/pkgconfig/
3、运行cmake-gui
(1)、配置源码目录:/home/cxyazhou/work/opencv-4.7.0
(2)、编译目录:/home/cxyazhou/work/opencv-4.7.0_build
(3)、配置编译链
在这里插入图片描述
在这里插入图片描述
(4)、CMAKE_INSTALL_PRIFIX选择:/home/cxyazhou/work/opencv
(5)、BUILD_SHARED_LIBS去掉
(6)、BUILD_ZLIB加上
(7)、添加 OPENCV_ENABLE_PKG_CONFIG 并设置为true
在这里插入图片描述

(8)、去掉不需要的模块
(9)、点击Configure、Generate,然后退出
4、进入build目录,进行编译
#cd /home/cxyazhou/work/opencv-4.7.0_build
#make -j6
#make install
五、库整理
1、删除x264动态库
2、ffmpeg、x264、libjpeg-turbo、opencv静态库分模块存放

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

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

相关文章

Mongodb的部署

MongoDB下载包获取 https://www.mongodb.com/try/download/community 安装配置 第一步:在服务器 /usr/local 下创建 MongoDB 文件夹,用来存放安装包、服务以及之后 MongoDB 的数据库和日志文件。 cd /usr/local // 进入安装目录 mkdir MongoDB // 创…

【LeetCode: 2369. 检查数组是否存在有效划分 | 暴力递归=>记忆化搜索=>动态规划 | 线性dp】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

OpenCV(14)-OpenCV4.0中文文档学习2(补充)

相机校准和3D重建 相机校准 标定 findChessboardCorners() 它返回角点和阈值,如果成功找到所有角点,则返回 True。这些角落将按顺序放置(从左到右,从上到下)cornerSubPix()用以寻找图案,找到角点后也可以…

PHREEQC实践建模技术方法

PHREEQC软件为美国地质调查局基于C和C语言开发,面向一般地球化学、水文地球化学模拟的专业软件。该软件历经近30年迭代,功能不断完善,目前已发展成为-以PHREEQC为计算核心(更新至3.7版本),辅以具备二次开发…

【无标题】docker安装jenkins安装流程(二)

配置Publish Over SSH JENKINS_URL/job/goods/build?tokenTOKEN_NAME http://xxxxx:8001/job/goods/job/goods/build?tokenxql1232.提交合并代码触发自动构建 http://xxxxx:8001/buildByToken/build?jobgoods&tokenxql123http://xxxxx:8001/buildByToken/build?jobgood…

Javaee 基于注解的AOP开发

基于注解的 aop 开发步骤: 1. 创建目标接口和目标类(内部有切点) 2. 创建切面类(内部有增强方法) 3. 将目标类和切面类的对象创建权交给 spring 4. 在切面类中使用注解配置织入关系 5. 在配置文件中开启组件…

gpt写文章批量写文章-gpt3中文生成教程

怎么用gpt写文章批量写文章 批量写作文章是很多网站、营销人员、编辑等需要的重要任务,GPT可以帮助您快速生成大量自然、通顺的文章。下面是一个简单的步骤介绍,告诉您如何使用GPT批量写作文章。 步骤1:选择好训练模型 首先,选…

14、RPC与gRPC

目录 一、rpc基础1 - rpc入门2 - 基础的rpc通信3 - 基于接口的RPC服务 二、rpc编码1 - gob编码2 - json on tcp3 - json on http(待补充) 三、prtotobuf编码1 - prtotobuf概述2 - protobuf编译器3 - 序列化和反序列化4 - 基于protobuf的RPC(待…

TiDB实战篇-TiCDC

目录 简介 原理 使用场景 使用限制 硬件配置 部署 在安装TiDB的时候部署 扩容部署 操作 管理CDC 管理工具 查看状态 创建同步任务 公共参数 CDC任务同步到MySQL实战 同步命令 查看所有的同步任务 同步任务的状态 管理同步任务 查看一个同步信息的具体情况 …

腾讯云COS+ElmentUI+SpringBoot视频上传功能实现

文章目录 第一步:选择合适的组件并整合到项目中第二步:前端校验第三步:绑定上传成功方法第四步:腾讯云cos后端接口配置 今天在做项目的时候需要完成一个视频上传的功能,这里做一个记录! 第一步:…

春秋云境:CVE-2022-25411(Maxsite CMS文件上传漏洞)

目录 一、题目 二、官方POC 一、题目 介绍: MaxSite CMS是俄国MaxSite CMS开源项目的一款网站内容管理系统 Maxsite CMS存在文件上传漏洞,攻击者可利用该漏洞通过精心制作的PHP文件执行任意代码。 进入题目: 发现是俄文 乌拉~~ 不过没…

MongoDB副本集

一、介绍 MongoDB副本集(Replica set)是一组MongoDB实例,它们都维护着相同的数据集合。MongoDB副本集是有自动故障恢复功能的主从集群,有一个Primary节点和一个或多个Secondary节点组成。副本集没有固定的主节点,当主节点发生故障时整个集群会选举一个主节点为系统提供服务…

6.S081——Lab3——page table

0.briefly speaking 这是6.S081 Fall 2021的第三个实验,是页表和虚拟内存相关的实验,在之前我们已经详细地阅读了Xv6内核中有关虚拟内存管理的源代码,现在就可以深入一下这个实验了。本实验分为如下三个小任务: Speed up system…

【Mac-m2芯片docker安装AWVS及问题解决】

【Mac-m2芯片docker安装AWVS及问题解决】 docker安装AWVS安装报错问题解决 docker安装 docker安装命令: brew install --cask --appdir/Applications docker 查看是否安装成功: docker --version docker info 换源: “https://hub-mirror.c.…

在Python中使用牛顿法

牛顿法简介 牛顿法(Newton’s method)是一种常用的优化算法,在机器学习中被广泛应用于求解函数的最小值。其基本思想是利用二次泰勒展开将目标函数近似为一个二次函数,并用该二次函数来指导搜索方向和步长的选择。 牛顿法需要计…

从零开始学架构——FMEA故障模式与影响分析

1 FMEA介绍 FMEA(Failure mode and effects analysis,故障模式与影响分析)又称为失效模式与后果分析、失效模式与效应分析、故障模式与后果分析等,专栏采用“故障模式与影响分析”,因为这个中文翻译更加符合可用性的语…

高并发的程序设计-系统设计层面

高并发的程序设计-系统设计层面 目录概述需求: 设计思路实现思路分析1.主要指标二、处理高并发的方案 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better …

ChatGPT写文章效果-ChatGPT写文章原创

ChatGPT写作程序:让文案创作更轻松 在当前数字化的时代,营销推广离不开文案创作。然而,写作对许多人来说可能是一项耗时而枯燥的任务。如果您曾经为写出较高质量的文案而苦恼过,那么ChatGPT写作程序正是为您而设计的。 ChatGPT是…

gitlab安装与使用(图文详解超详细)

一 找最新的安装镜像 推荐用清华源 目前最新版本是15.95 二 在/opt 下创建gitlab文件夹 [rootlocalhost ~]# mkdir /opt/gitlab [rootlocalhost ~]# 三 在gitlab目录下写一个 shell脚本 vim int.sh给它加上执行权限 chmod ux int.sh运行这个脚本 ./ins.sh出现这个截图 安…

three.js之摄像机

本节将在上一节的基础上进一步介绍一下摄像机功能。 three.js的摄像机主要包括两类:正交投影摄像机和透视投影摄像机。 透视投影摄像机:THREE.PerspectiveCamera,最自然的视图,距离摄像机越远,它们就会被渲染得越小。…