全网首发:Ubuntu编译跨平台嵌入式支持ffmpeg的OpenCV

  • 难题:

使用cmake编译,死活找不到ffmpeg

使用cmake-gui,能找到ffmpeg,不能编译。

  • 解决思路

结合cmake和cmake-gui。

为了给初次编译的朋友一点方便,这里专门完整详细记录。

  • 安装编译环境

其他的略。

复制代码
apt -y install cmake cmake-qt-gui
apt -y install build-essential pkg-config
  • 安装跨平台编译器工具

可以使用ubuntu自带的arm编译系统。

OpenCV交叉编译ARM版本_用cmake-gui交叉编译poco的arm版本-CSDN博客

也可以使用指定的编译系统。此处使用的是自己找指定的编译系统,安装目录服务是:

/opt/linux/x86-arm/aarch64-mix210-linux

  • 修改网址

虚拟机/etc/hosts和主机C:\Windows\System32\drivers\etc,都增加一句:

复制代码
185.199.108.133 raw.githubusercontent.com
  • 编译ffmpeg

嵌入式交叉编译:ffmpeg及相关库_嵌入式ffmpeg交叉编译-CSDN博客

  • 最关键之第1步,配置PKG_CONFIG_PATH

在.bashrc中增加一句,就是ffmpeg的编译目录所在:

复制代码
BUILD_DIR=${HOME}/build_libs
export PKG_CONFIG_PATH=${BUILD_DIR}/lib/pkgconfig:${PKG_CONFIG_PATH}

重开一个终端,或使用source生效。

  • 下载OpenCV

下载后,解压在同一个目录中,如opencv-arm。

Tags · opencv/opencv · GitHub

Tags · opencv/opencv_contrib · GitHub

  • 运行cmake-gui

如果想把上次的设置清除,可以点击:菜单, File, Delete Cache。

  • 最关键之第2步

点Yes:

选择如图:

输入编译器(注意PATH设置),点Finish:

耐心等待结束。

  • Configure完成,检查ffmpeg

如果出错,WITH_FREETYPE/WITH_PNG/WITH_GTK/BUILD_opencv_dnn等去掉勾,再次点击Configure即可。

盼望已久的ffmpeg终于找到啦!

  • 最关键之第3步,现在再用cmake编译

嵌入式交叉编译:arm版OpenCV(三种编译脚本)-CSDN博客

  • 检查videio.so

    $ file libopencv_videoio.so.4.10.0
    libopencv_videoio.so.4.10.0: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, with debug_info, not stripped

  • 测试运行

略。

相关推荐
大江东去浪淘尽千古风流人物8 分钟前
【DSP】向量化操作的误差来源分析及其经典解决方案
linux·运维·人工智能·算法·vr·dsp开发·mr
赖small强1 小时前
【Linux驱动开发】NOR Flash 技术原理与 Linux 系统应用全解析
linux·驱动开发·nor flash·芯片内执行
IT运维爱好者2 小时前
【Linux】LVM理论介绍、实战操作
linux·磁盘扩容·lvm
LEEE@FPGA2 小时前
ZYNQ MPSOC linux hello world
linux·运维·服务器
郝学胜-神的一滴2 小时前
Linux定时器编程:深入理解setitimer函数
linux·服务器·开发语言·c++·程序人生
冉佳驹2 小时前
Linux ——— 系统中的用户身份切换、文件权限管理、特殊权限和粘滞位设置
linux·chmod·chown·粘滞位·su 命令·chgrp·umask
Tranquil_ovo2 小时前
【Linux】Makefile 基础
linux
漏洞文库-Web安全2 小时前
Linux逆向学习记录
linux·运维·学习·安全·web安全·网络安全·逆向
无奈笑天下2 小时前
【银河麒麟高级服务器部署本地yum源】
linux·运维·服务器·经验分享
dodod20123 小时前
Ubuntu 24.04 LTS 使用清华大学的 Ubuntu 镜像源以加速下载和更新操作
linux·运维·ubuntu