AGX Xavier 场景下的 【OpenCV + FFmpeg + CUDA + GStreamer】 重装 & 编译的2025年稳定方案

1️⃣ 先卸载老版本

AGX 自带很多预装包,原则:卸载干净,避免旧库和新编译冲突。


🔹 卸载 OpenCV

dpkg -l | grep opencv
sudo apt-get remove --purge libopencv* python3-opencv# 自己 make install 装过的也一起删
sudo rm -rf /usr/local/include/opencv4
sudo rm -rf /usr/local/lib/libopencv*
sudo rm -rf /usr/local/lib/pkgconfig/opencv4.pc
sudo rm -rf /usr/local/lib/python3*/dist-packages/cv2*# 卸载 pip 版本(如果有)
pip3 uninstall opencv-python opencv-contrib-pythonsudo ldconfig

🔹 卸载 FFmpeg

dpkg -l | grep ffmpeg
sudo apt-get remove --purge ffmpegsudo rm -rf /usr/local/bin/ffmpeg /usr/local/bin/ffprobe /usr/local/lib/libav*sudo ldconfig

2️⃣ 检查 CUDA 和 GStreamer

AGX Xavier 自带 CUDA,JetPack 4.5 默认是 CUDA 10.2 + GStreamer 1.14.x
→ 不要自己乱装 CUDA,保持 JetPack 自带就行。

检查一下:

nvcc --version
gst-launch-1.0 --version

确认有:

CUDA compilation tools, release 10.2, V10.2.89
GStreamer 1.14.x

 

3️⃣ 安装依赖

sudo apt-get update# 编译工具
sudo apt-get install -y build-essential cmake git pkg-config# GStreamer (一定要有)
sudo apt-get install -y libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev \gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \gstreamer1.0-plugins-ugly gstreamer1.0-libav# 图像编解码
sudo apt-get install -y libjpeg-dev libpng-dev libtiff-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev# OpenGL 和 V4L2
sudo apt-get install -y libgtk-3-dev libcanberra-gtk* libtbb2 libtbb-dev libdc1394-22-dev# Python
sudo apt-get install -y python3-dev python3-numpy

4️⃣ 编译 OpenCV (推荐 4.5.5)

🔹 拉源码

cd ~
git clone https://github.com/opencv/opencv.git
cd opencv
git checkout 4.5.5cd ~
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib
git checkout 4.5.5cd ~/opencv
mkdir build && cd build

将opencv_contrib放在opencv的文件夹下。后面配置CMake路径时注意统一。

解决ADE被墙

 cmake的过程中,会因为下载ADE被墙,而停顿,因此只好手动下载。

wget https://github.com/opencv/ade/archive/refs/tags/v0.1.1f.zip
# 解压到 opencv_contrib/modules/ade 或者 opencv/3rdparty/ade
unzip v0.1.1f.zip
mv ade-0.1.1f/* ~/opencv_build/opencv/3rdparty/ade
opencv/├── 3rdparty/│    ├── ade/│         ├── CMakeLists.txt│         ├── source.cpp ...

只要在 opencv/3rdparty/ade/ 里能找到它的 CMakeLists.txt,就没问题。

并在CMake是加上一句:

-D OPENCV_ADE_DIR=~/opencv_build/opencv/3rdparty/ade

 解决NVIDIA_OPTICAL_FLOW被墙

🔹 CMake 推荐配置(AGX Xavier 专属 🚀)

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=~/opencv/opencv_contrib/modules -D WITH_CUDA=ON -D WITH_CUDNN=ON -D OPENCV_DNN_CUDA=ON -D ENABLE_FAST_MATH=ON -D CUDA_FAST_MATH=ON -D WITH_CUBLAS=ON -D WITH_GSTREAMER=ON -D WITH_FFMPEG=ON -D WITH_GSTREAMER_0_10=OFF -D WITH_LIBV4L=ON -D WITH_OPENGL=ON -D WITH_QT=OFF -D BUILD_opencv_python2=OFF -D BUILD_opencv_python3=ON -D PYTHON3_EXECUTABLE=$(which python3) -D PYTHON3_INCLUDE_DIR=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['include'])") -D PYTHON3_LIBRARY=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['stdlib'])") -D OPENCV_GENERATE_PKGCONFIG=ON -D BUILD_TESTS=OFF -D OPENCV_ENABLE_NONFREE=ON -D BUILD_EXAMPLES=OFF -D OPENCV_ADE_DIR=~/opencv/3rdparty/ade ..

需要包含:

-D BUILD_opencv_python3=ON \
-D PYTHON3_EXECUTABLE=$(which python3) \
-D PYTHON3_INCLUDE_DIR=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['include'])") \
-D PYTHON3_LIBRARY=$(python3 -c "from sysconfig import get_paths as gp; print(gp()['stdlib'])") \

 否则会提示:

 python3 -c "import cv2; print(cv2.getBuildInformation())" | grep CUDATraceback (most recent call last):File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'
nvidia@agxA:~/opencv/build$ python3 -c "import cv2; print(cv2.getBuildInformation())" | grep GStreamer
Traceback (most recent call last):File "<string>", line 1, in <module>
ModuleNotFoundError: No module named 'cv2'

🔹 编译 & 安装

make -j$(nproc)   # Xavier AGX 建议一次用 4-6 核,别一次全开,避免 OOM
sudo make install
sudo ldconfig

5️⃣ (可选)FFmpeg

如果主要用 GStreamer 了,FFmpeg 不必须单独编译。

要自己带硬编解码:

  • Jetson 上推荐用 NVIDIA 提供的 L4T Multimedia API 或者 nvmpi 社区版。

  • nvmpi 维护得很久没更新,新项目直接用 GStreamer + nvarguscamerasrc + nvv4l2decoder 最稳定。

6️⃣ 验证

# OpenCV
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep CUDA
python3 -c "import cv2; print(cv2.getBuildInformation())" | grep GStreamer# GStreamer
gst-inspect-1.0 | grep nv

关键点总结:

1️⃣ JetPack 4.5 的 CUDA/FFmpeg/GStreamer 都需要自己编时打开
2️⃣ ADE 可手动解压替代自动下载
3️⃣ JNITesseract 非刚需可以跳过或后装
4️⃣ BUILD_opencv_python3=ON 和 Python 路径一定配好
5️⃣ 不要混用 pip 的 opencv-python,它是 CPU 版,没 GPU

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

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

相关文章

Cesium实战:交互式多边形绘制与编辑功能完全指南(最终修复版)

&#x1f4cb; 文章目录 引言功能概述环境准备核心实现步骤 地图初始化多边形绘制顶点编辑功能颜色与透明度自定义面积计算与显示 常见问题解决方案 多边形颜色显示异常面积标签不可见控制台alpha类型错误地图交互无法恢复 完整代码总结与扩展 引言 Cesium作为一款强大的3D地…

SQL判断先判断条件1是否符合,条件1不符合再判断条件2

伪代码假设存在条件1和条件2SELECT * FROM table1 WHERE 条件1 AND 条件2方法1&#xff1a;先判断条件1是否符合,条件1不符合再判断条件2是否满足&#xff1a;SELECT * FROM table1 WHERE (条件1) OR (NOT 条件1 AND 条件2);方法 2: 使用 IF 或数据库特有函数&#xff08;…

游戏的程序员会不会偷偷改自己账号的数据?

看到这个问题&#xff0c;我忍不住笑了。 作为一个在程序员这条路上摸爬滚打了快10年的老司机&#xff0c;虽然我主要专精嵌入式开发&#xff0c;但我也接触过不少游戏开发的朋友&#xff0c;对游戏行业的内部运作有一定了解。这个问题可以说是每个游戏玩家都曾经想过的&#x…

uniapp小程序tabbar跳转拦截与弹窗控制

一、第一步1、App.vue中定义globalData用于全局存储状态globalData:{needShowReleaseConfirm: false, // 标记是否需要显示发布页面确认弹窗allowReleaseJump: false ,// 标记是否允许跳转到发布页面},2、在App.vue中的onLaunch写入监听事件onLaunch: function() {// 添加switc…

华为网路设备学习-26(BGP协议 一)

一、AS&#xff08;自治系统&#xff09;AS&#xff08;自治系统&#xff09;的大小通常指其分配的唯一编号&#xff0c;范围分为两种&#xff1a;‌2字节AS号‌&#xff1a;取值范围1至65535&#xff08;其中64512-65535为私有AS号&#xff09; ‌‌4字节AS号‌&#xff1a;取…

大模型开发框架LangChain之函数调用

1.前言 之前一直使用 dify开发 agent&#xff0c;虽然功能很全面、效果也稳定&#xff0c;但是也存在流程固化、不灵活&#xff0c;以及 dify本身太重&#xff08;内部包含10个容器&#xff09;等问题。 故最近研究了大名顶顶的 langchain&#xff0c;先从函数调用开始&#xf…

pycharm中自动补全方法返回变量

使用IDEA开发java中&#xff0c;可以使用altenter 快捷键快速补全方法放回的变量使用pycharm也想实现此效果&#xff0c;如下图操作方法&#xff1a;pycharm中默认的补全方法返回变量的快捷键是&#xff1a;CtrlAltv 可以直接使用默认快捷键&#xff0c;也可以在settings->k…

Set 二分 -> 剑指算法竞赛

C【STL】集合set 标准库提供 set 关联容器分为&#xff1a; 按关键字有序保存元素&#xff1a;set&#xff08;关键字即值&#xff0c;即只保存关键字的容器&#xff09;、multiset&#xff08;关键字可重复出现的 set&#xff09;&#xff1b; 无序集合&#xff1a;unordered…

php的原生类

前言&#xff1a;累麻了&#xff01; 反射类 反射类 ReflectionClass&#xff1a;ReflectionClass 类报告了一个类的有关信息。正如其名用于映射反射一个类的类&#xff01; new ReflectionClass(MyClass) 会创建一个 ReflectionClass 实例&#xff0c;代表 MyClass 这个类。 …

PC网站和uniapp安卓APP、H5接入支付宝支付

首先我们需要完成支付宝账号注册&#xff0c;支持的账号类型&#xff1a;支付宝企业账号、支付宝个人账号、个体工商户。 到支付宝商家平台 产品中心开通APP支付、手机网站支付、电脑网站支付的产品权限。 一、电脑PC网站接入 电脑PC网站支付是指商户在电脑网页展示商品或服务&…

MCU芯片内部的ECC安全机制

MCU&#xff08;微控制器单元&#xff09;芯片内部的 ECC&#xff08;错误检测与纠正&#xff09;安全机制 是一种至关重要的硬件级可靠性技术&#xff0c;主要用于保护关键存储单元&#xff08;如 SRAM、Flash、Cache&#xff09;中的数据完整性&#xff0c;防止因外部干扰或硬…

【自动驾驶】经典LSS算法解析——深度估计

LSS-Lift.Splat,Shoot 论文题目&#xff1a;Lift, Splat, Shoot: Encoding Images From Arbitrary Camera Rigs by Implicitly Unprojecting to 3D 代码&#xff1a;https://github.com/nv-tlabs/lift-splat-shoot 概括&#xff1a;先做深度估计和特征融合&#xff0c;然后投…

《【第八篇-图片总结篇】Python图片处理自动化:终极工厂!从裁剪压缩到智能加水印,打造你的视觉内容生产流水线!》

在数字时代&#xff0c;图片无处不在。然而&#xff0c;高质量的图片背后&#xff0c;往往隐藏着繁琐的后期处理&#xff1a;图片文件太大导致加载慢&#xff1b;尺寸不符需要裁剪&#xff1b;版权保护要加水印&#xff1b; 为了兼容性还得批量转换格式……这些重复、机械的工…

frame 与新窗口切换操作【selenium 】

&#x1f9ed; 一、切换到 iframe 内部进行操作在浏览器自动化测试中&#xff0c;iframe 是一个特别的存在。它相当于在当前页面中嵌入了另一个独立的 HTML 页面。当我们试图直接访问 iframe 中的元素时&#xff0c;往往会发现定位不到&#xff0c;比如&#xff1a;elements w…

MYSQL C_API使用全解

文章目录C_API&#xff08;简单的&#xff09;安装这个库使用流程初始化连接mysql_init建立连接mysql_real_connect执行SQL语句mysql_query处理结果mysql_store_resultmsyql_use_resultmysql_num_rowsmsyql_free_resultmysql_num_fieldsmysql_fetch_row多线程安全关闭连接mysql…

闲庭信步使用图像验证平台加速FPGA的开发:第二课——RGB转YCbCr的FPGA硬件编程详解

&#xff08;本系列只需要modelsim即可完成数字图像的处理&#xff0c;每个工程都搭建了全自动化的仿真环境&#xff0c;只需要双击文件就可以完成整个的仿真&#xff0c;大大降低了初学者的门槛&#xff01;&#xff01;&#xff01;&#xff01;如需要该系列的工程文件请关注…

RK3566/RK3568 Android11 修改selinux模式

概述RK3566/RK3568 Android11 SDK默认的selinux是Enforcing模式(强制模式)。Enforcing&#xff1a;强制模式&#xff1a;SELinux在运行中&#xff0c;且已经开始限制domain/type之间的验证关系 Permisssive&#xff1a;宽容模式&#xff1a;SELinux在运行中&#xff0c;如果验证…

iOS Widget 开发-3:Widget 的种类与尺寸(主屏、锁屏、灵动岛)

iOS 支持多种类型的 Widget&#xff0c;分布在主屏幕、锁屏、灵动岛、待机模式、控制中心等多个系统位置。每种 Widget 都有各自的尺寸、交互能力与限制。 本篇将系统梳理 iOS 当前支持的 Widget 类型与尺寸规格。主屏 Widget&#xff08;Home Screen Widgets&#xff09; 主屏…

ffmpeg 中 write_option()函数详细注释

author: hjjdebug date: 2025年 07月 11日 星期五 10:51:23 CST descrip: ffmpeg 中 write_option()函数详细注释 文章目录1. 函数原型1.1 参数说明1.2 SpecifierOpt 说明符选项结构2. write_option 代码注释2.1 谁调用了write_option 函数?3. 小结:write_option()不仅在ffmpe…

PandaCoder重大产品更新-引入Jenkinsfile文件支持

写在前面 安装这个插件可以直接平替 Jenkinsfile Pro &#xff0c;节省200元关于插件介绍的处女篇&#xff1a;https://mp.weixin.qq.com/s/fwMEhmx8vxVlvfnipx09Ag为什么叫「熊猫编码助手」&#xff1f; 熊猫是中国的国宝&#xff0c;备受世界喜爱&#xff0c;代表着中国特色和…