RK3588 HDMI-RX 驱动、RGA 加速与 OpenCV GStreamer 支持完整指南

一、环境检测与前置依赖

确认内核与 HDMI-RX 节点:

uname -a
# 输出:6.1.0-1025-rockchip ...dmesg | grep -i hdmirx
# 应能看到 hdmirx-controller 节点:
# fdee0000.hdmirx-controller driver probe ok!

如果仅出现:

rockchip-dmc dmc: hdmirx_rate = 2112000000

说明设备树已识别 hdmirx,但没有加载 Overlay (rk3588-hdmirx.dtbo)

更新系统依赖:

sudo apt update
sudo apt install -y \gstreamer1.0-plugins-base gstreamer1.0-plugins-good \gstreamer1.0-plugins-bad gstreamer1.0-libav gstreamer1.0-tools v4l-utils

二、启用 HDMI-RX Overlay

  1. 获取或编译 Overlay 文件
    从 Joshua-Riek Rockchip Ubuntu 仓库 下载 rk3588-hdmirx.dtbo,拷贝到固件路径:

sudo cp rk3588-hdmirx.dtbo \/lib/firmware/6.1.0-1025-rockchip/device-tree/rockchip/overlay/
  1. 编辑 u-boot 配置

sudo vim /etc/default/u-boot

取消注释并加入:

U_BOOT_FDT_OVERLAYS="device-tree/rockchip/overlay/rk3588-hdmirx.dtbo"
  1. 更新并重启

sudo u-boot-update
sudo reboot
  1. 验证驱动加载

dmesg | grep -i hdmirx
v4l2-ctl --list-devices
ls /dev/video*
# 应看到 /dev/video0 (hdmirx)

三、安装 RGA 硬件加速支持

  1. 安装 librga 并生成 pkg-config

git clone https://github.com/airockchip/librga.git
cd librgasudo mkdir -p /usr/local/lib/pkgconfig
sudo tee /usr/local/lib/pkgconfig/librga.pc > /dev/null <<'EOF'
prefix=/usr/local
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/includeName: librga
Description: Rockchip Raster Graphic Acceleration library
Version: 2.2
Libs: -L${libdir} -lrga
Cflags: -I${includedir}
EOF
  1. 复制头文件和库文件

sudo cp -r include/* /usr/local/include/
sudo cp libs/Linux/gcc-aarch64/* /usr/local/lib/
sudo ldconfig
  1. 配置环境变量

echo 'export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH' >> ~/.bashrc
source ~/.bashrc
  1. 测试

pkg-config --modversion librga
# 输出 2.2(或实际版本)

四、构建 gstreamer-rgaconvert 插件

git clone https://github.com/higithubhi/gstreamer-rgaconvert.git
cd gstreamer-rgaconvert
meson setup build --wipe
ninja -C build
sudo ninja -C build install

安装完成后,将插件放到 GStreamer 搜索路径:

sudo cp build/libgstrgaconvert.so /usr/lib/aarch64-linux-gnu/gstreamer-1.0/

测试插件:

gst-inspect-1.0 rgaconvert

五、重建支持 GStreamer 的 OpenCV 5.x

  1. 准备源码

git clone https://github.com/opencv/opencv.git
cd opencv && git checkout 5.x && cd ..
git clone https://github.com/opencv/opencv_contrib.git
cd opencv_contrib && git checkout 5.x && cd ..
  1. 构建 OpenCV

mkdir build_opencv && cd build_opencvcmake ../opencv \-D CMAKE_BUILD_TYPE=Release \-D CMAKE_INSTALL_PREFIX=~/opencv-gst-install \-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \-D WITH_GSTREAMER=ON \-D WITH_GTK=ON \-D WITH_FFMPEG=ON \-D WITH_V4L=ON \-D BUILD_opencv_highgui=ON \-D OPENCV_ENABLE_NONFREE=ON \-D BUILD_EXAMPLES=OFF \-D PYTHON3_EXECUTABLE=$(which python) \-D PYTHON3_INCLUDE_DIR=$(python -c "from sysconfig import get_paths; print(get_paths()['include'])") \-D PYTHON3_LIBRARY=$(python -c "import sysconfig, sys; print(sysconfig.get_config_var('LIBDIR') + '/libpython' + sys.version[:3] + '.so')") \-D PYTHON3_PACKAGES_PATH=$(python -c "import site; print(site.getsitepackages()[0])")

如果 CMake 输出:

-- GStreamer: YES
-- Found librga: /usr/local/lib/librga.so

表示 RGA 与 GStreamer 支持已启用。


六、测试 HDMI 输入 + RGA 加速

  1. 直接用 GStreamer 测试

DEVICE=/dev/video0
gst-launch-1.0 v4l2src device=$DEVICE io-mode=4 ! \rgaconvert ! \video/x-raw,width=1280,height=720,format=NV12 ! \autovideosink
  1. OpenCV + GStreamer

import cv2pipeline = ("v4l2src device=/dev/video0 io-mode=4 ! ""video/x-raw,format=NV12,width=1920,height=1080 ! ""rgaconvert ! ""video/x-raw,width=1280,height=720,format=NV12 ! ""appsink"
)cap = cv2.VideoCapture(pipeline, cv2.CAP_GSTREAMER)while cap.isOpened():ret, frame = cap.read()if not ret:breakcv2.imshow("HDMI-IN with RGA", frame)if cv2.waitKey(1) & 0xFF == 27:  # ESC 退出breakcap.release()
cv2.destroyAllWindows()

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

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

相关文章

AS32A601芯片QSPI 调试技术解析与与实战经验分享

一、概述&#xff08;一&#xff09;QSPI 简介QSPI&#xff08;Quad Serial Peripheral Interface&#xff09;是一种高速串行通信接口&#xff0c;在标准 SPI&#xff08;Serial Peripheral Interface&#xff09;的基础上扩展至 4 条数据线&#xff08;Quad Mode&#xff09;…

TDengine 转化函数 TO_TIMESTAMP 用户手册

TDengine TO_TIMESTAMP 函数用户使用手册 函数概述 TO_TIMESTAMP 是 TDengine 中的标量函数&#xff0c;用于将字符串按照指定格式转换为时间戳。该函数在数据导入、时间格式转换、以及处理各种时间字符串格式时非常有用。 语法 TO_TIMESTAMP(ts_str_literal, format_str_liter…

关于我司即将对商业间谍行为进行法律诉讼的通知

最后警告我司所属社交媒体中所有友商间谍&#xff1a;请于2025年7月26日上午十点前&#xff0c;自行删除我方好友&#xff0c;并停止通过欺诈行为&#xff08;包括但不限于冒充客户等&#xff09;盗取我司商业秘密的行为。十点后&#xff0c;我司将开始进行逐一排查&#xff0c…

【打怪升级 - 03】YOLO11/YOLO12/YOLOv10/YOLOv8 完全指南:从理论到代码实战,新手入门必看教程

引言&#xff1a;为什么选择 YOLO&#xff1f; 在目标检测领域&#xff0c;YOLO&#xff08;You Only Look Once&#xff09;系列模型一直以其高效性和准确性备受关注。作为新版本&#xff0c;YOLO系列的新版本总能在前辈的基础上进行了多项改进&#xff0c;包括更高的检测精度…

JMeter每次压测前清除全部以确保异常率准确(以黑马点评为例、详细图解)

目录 一、前言 二、未清除全部会出现的情况(以乐观锁解决超卖问题为例) 三、清除全部就能得到准确的结果 一、前言 在学习黑马点评之前我并没有接触过JMeter这个压测软件&#xff0c;然后在黑马点评视频中老师也是直接拿起JMeter就开始使用&#xff0c;所以我一直在不断搜索…

关于新学C++编程Visual Studio 2022开始,使用Cmake工具构建Opencv和SDK在VS里编译项目开发简介笔记

1. C 项目build文件夹 2. VS解决方案管理器Solution——.sln文件 3. CMake 自动化构建工具 4. SDK软件开发工具包作为初学者&#xff0c;从工程项目开始接触完整一套流程工具和编译&#xff0c;有助于快速上手。 一、C 项目build文件夹在 VS2022 中打开 C 项目后&#xff0c;在…

测试ppyoloe的小样本few-shot能力,10张图片精度达到69.8%

近期公司有个项目&#xff0c;需要解决长尾样本的问题&#xff0c;所以测试了一下paddlepaddle小样本的能力。 环境&#xff1a;&#xff1a;T4 、ubuntu 、cuda-11.6 、py3.9、 paddlepaddle-gpu2.6.0、pip install opencv-python4.5.5.64 -i https://pypi.tuna.tsinghua.…

结构化布线系统详解

1. 结构化布线系统概述 结构化布线系统(Structured Cabling System, SCS)是一种标准化、模块化的建筑物或建筑群内信息传输基础设施&#xff0c;它为语音、数据、图像等多媒体业务提供了统一的物理传输介质。与传统的点对点布线方式不同&#xff0c;结构化布线采用层次化、标准…

【Java学习】匿名内部类的向外访问机制

目录 一、方法局部变量的访问 1.生命周期 1.1方法生命周期 1.2匿名实例生命周期 1.3生命超时性 2.变量捕获 2.1按值捕获 2.1.1值捕获优势 2.1.1.1生命及时访问 2.1.1.2线程安全 2.1.2常量值捕获优势 2.2按引用捕获 引用捕获风险 (1)生命超时访问 (2)线程不安全 …

LinkedList的模拟实现+LinkedList和ArrayList的区别

目录 LinkedList的模拟实现 什么是双向链表 增加数据 头插法&#xff1a; 尾插法&#xff1a; 指定的下标插入&#xff1a; 删除数据 删除双向链表中出现的第一个key 置空所有数据 LinkedList和ArrayList的区别 顺序表对应的集合类是ArrayList&#xff1b;链表对应的集…

Vue + WebSocket 实时数据可视化实战:多源融合与模拟数据双模式设计

在现代交通大屏项目中&#xff0c;实时数据的采集和可视化尤为重要。本文结合 Vue3 和 ECharts&#xff0c;分享一个支持多 WebSocket 数据源实时合并、模拟数据调试、自动重连的完整设计方案&#xff0c;帮助你快速搭建健壮的数据可视化组件。一、项目背景与核心需求实时接收多…

C#索引器、接口、泛型

以下是对提供的 C# 代码中涉及的核心知识点的梳理和总结&#xff0c;涵盖索引器、接口、泛型三大核心内容&#xff0c;以及相关实践要点&#xff1a;一、索引器&#xff08;Indexer&#xff09;索引器是一种允许类或结构体像数组一样通过[]语法访问成员的特殊成员&#xff0c;本…

界面组件DevExpress WPF中文教程:Grid - 如何过滤节点?

DevExpress WPF拥有120个控件和库&#xff0c;将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序&#xff0c;这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…

Excel——INDEX和MATCH傻傻分不清?

核心逻辑​先用 MATCH 找到目标姓名在表格中的 ​行号&#xff0c;再用 INDEX 根据行号 ​提取对应信息。就像查字典&#xff1a;先用拼音找到字的页码&#xff08;MATCH 找行号&#xff09;再翻到该页看具体解释&#xff08;INDEX 取数据&#xff09;​分步拆解&#xff08;以…

制造业低代码平台实战评测:简道云、钉钉宜搭、华为云Astro、金蝶云·苍穹、斑斑低代码,谁更值得选?

上回聊了斑斑和简道云&#xff0c;不少同行私信问我其他几个低代码平台怎么样&#xff0c;今天就给大家来个"五大门派"终极对决&#xff01; 一、先说痛点 制造业搞数字化最怕三件事&#xff1a; 1.钱花了没效果&#xff08;大平台用不起&#xff0c;小工具不够用&…

Jenkins中HTML文件显示样式问题解决方案

Jenkins中HTML文件显示样式问题解决方案 问题描述 在Jenkins中归档的HTML文件显示格式失效&#xff0c;样式无法正常显示&#xff0c;但在本地浏览器中打开却能正常显示。 问题原因 Jenkins为了安全考虑&#xff0c;默认设置了严格的内容安全策略(Content Security Policy, CSP…

四、配置文件

文章目录1. 文件类型1.1 properties1.2 yaml1.2.1 简介1.2.2 基本语法1.2.3 数据类型1.2.4 示例2. 配置提示1. 文件类型 1.1 properties 同以前的properties的用法 1.2 yaml 1.2.1 简介 YAML 是 “YAML Ain’t Markup Language”&#xff08;YAML 不是一种标记语言&#x…

Python常用医疗AI库以及案例解析(场景化进阶版)

📊 框架应用拓扑图用例 #mermaid-svg-lZ1J5KCaVWBV2kAu {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lZ1J5KCaVWBV2kAu .error-icon{fill:#552222;}#mermaid-svg-lZ1J5KCaVWBV2kAu .error-text{fill:#552222;st…

Python高效操作Kafka实战指南

Python操作Kafka的高效 以下是使用Python操作Kafka的高效消息发送实例,涵盖基础发送、批量处理、异步回调等场景。示例基于confluent-kafka库(推荐)和kafka-python库,代码均经过实测。 流程图 基础消息发送(同步) from confluent_kafka import Producerproducer = Pro…

离线快速处理PDF格式转化的方案

日常办公中&#xff0c;PDF 几乎成了我们离不开的文件格式。然而像 WPS 这样的工具&#xff0c;不少实用功能都需要额外付费才能解锁。它的打开方式很简单&#xff0c;双击桌面图标即可运行。它不会弹出主界面&#xff0c;而是默默驻留在系统托盘区&#xff0c;需要时双击图标就…