[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解
srcampy /libsrcampy 名称释义先明确结论官方文档没有公布标准化英文全称是地平线内部项目缩写行业公认拆解如下srcampy Source Amplifier Python bindingsrc Source图像源MIPI Sensor、视频源amp Amplifier引申VSP/VPU 图像信号处理流水线 ISP 放大器通道内部代号AMP指代地平线多媒体图像流水线py Python bindingC 库对外 Python 封装底层库文件名libsrcamp.soPython 封装后命名libsrcampy代码内导入别名srcampy。补充背景RDK 平台内部代号地平线 RDK X3/X5多媒体驱动内部存在AMP Pipeline AMP Advanced Multimedia Pipeline高级多媒体流水线 负责MIPI 接收 → ISP 处理 → 多路缩放 → 编码 → 显示通路。这是amp词根真正来源。完整合理全称Source Advanced Multimedia Pipeline Python API中文理解图像源多媒体流水线 Python 接口库。不要混淆和音频 amplifier 功放无关属于图像 ISP 流水线代号不是Sample、Stream之类缩写区分libsrcamp.so原生 C 多媒体库libsrcampy.soC 库 Python 包装层 → 代码from hobot_vio import libsrcampy极简一句话记忆src图像源 amp多媒体流水线 AMP pyPython 封装 srcampy顺带区分配套名词方便你整体理解hobot_vioVIO Video Input Output视频输入输出包名libsrcampyVIO 包里面负责操控摄像头、HDMI、硬件数据流绑定的核心模块。srcampylibsrcampy完整详解一、基础定位python运行try: from hobot_vio import libsrcampy as srcampy except ImportError: from hobot_vio_rdkx5 import libsrcampy as srcampy全称libsrcampyPython 封装的地平线 VIO多媒体库平台区分RDK X3包名hobot_vioRDK X5包名hobot_vio_rdkx5核心用途专门操控 MIPI CSI 摄像头、ISP 图像流水线、HDMI 显示、硬件绑定数据流、OSD 图层叠加⚠️最重要区别只用于板载 MIPI 相机不用于 USB 摄像头不兼容标准 V4L2 /cv2.VideoCapture不要混用底层调用地平线自研 ISP 驱动不是 Linux 通用 uvc 驱动底层硬件流水线FCOS 代码的完整链路plaintextMIPI Sensor → ISP硬件流水线(VPS) → 多路硬件缩放输出 ├─通路A原始分辨率 → 直通HDMI └─通路B模型输入尺寸(NV12) → Python读取送给BPU推理所有缩放、格式转换由硬件 ISP 完成几乎不占用 CPU。二、srcampy 四大核心类Camera/Display/Encoder/DecoderFCOS 代码只用到前两个。1. srcampy.Camera () — MIPI 摄像头采集类1.1 cam.open_cam () 【重中之重】函数原型RDK X5 标准python运行cam.open_cam(video_index, fps, [out_w1, out_w2], [out_h1, out_h2], sensor_h, sensor_w)对应你代码python运行cam.open_cam(0, -1, -1, [w, disp_w], [h, disp_h], sensor_height,sensor_width)逐个参数拆解RDK X5 专属规则表格参数含义说明video_indexMIPI CSI 硬件通道 IDCSI0 → 0CSI1 → 2不是 1fps帧率-1 使用传感器默认帧率通常 30fps[out_w1, out_w2]两路输出宽度数组ISP硬件双通路输出[out_h1, out_h2]两路输出高度数组通路 1模型输入尺寸通路 2HDMI 预览尺寸sensor_h / sensor_wSensor 原生分辨率IMX415/IMX477 常用1080/1920双通路含义 ISP 硬件同时生成两张 NV12 图像通路 1w × h512×512→ 送给 FCOS 模型推理通路 2disp_w × disp_h1920×1080→ 送到 HDMI 实时预览全程硬件缩放无 CPU 图像 resize1.2 cam.get_img()python运行img cam.get_img(2, 512, 512)参数 1图像格式编号2 NV12模型需要的格式参数 2/3读取哪一路通路的分辨率返回值bytes 裸缓冲区NV12 内存数据python运行# 转为numpy数组 img np.frombuffer(img, dtypenp.uint8)✅巨大优势 拿到直接可用的 NV12不需要运行bgr2nv12_opencv()省去大量 CPU 运算。1.3 cam.close_cam()释放 ISP、MIPI 通道资源程序退出必须调用否则下次打开摄像头失败。1.4 常见坑CSI1 通道必须写video_index2填 1 直接识别不到摄像头open_cam两路分辨率顺序必须和get_img匹配不能同时用 srcampy v4l2-ctl/cv2.VideoCapture 读取同一个 CSI 通道驱动互斥抢占2. srcampy.Display () — HDMI 显示 OSD 图层类2.1 disp.display(layer_id, w, h)切换显示图层python运行# layer 0原始视频画面图层摄像头直通画面 disp.display(0, disp_w, disp_h) # layer 3OSD图形叠加图层绘制框、文字 disp.display(3, disp_w, disp_h)图层规则Layer0原始视频流Layer3OSD 叠加层透明图层用于绘制检测框OSD 图层不会修改原始视频流只是硬件叠加渲染CPU 开销极低。2.2 srcampy.bind(cam, disp)python运行srcampy.bind(cam, disp)硬件通路绑定把 Camera ISP 输出的原始分辨率图像直接硬件路由到 HDMI 显示。 画面传输完全不走 Python 内存零拷贝、极低延迟主线程不需要转发图像给显示器。2.3 OSD 绘图 API代码绘制检测框核心disp.set_graph_rect(x1,y1,x2,y2,line_width,refresh_flag, ARGB_color)绘制矩形框目标检测框disp.set_graph_word(x,y,text_bytes,font_size,refresh_flag, ARGB_color)绘制文字类别 置信度refresh_flag0 / 1关键说明1刷新整个 OSD 画布清空上一轮所有框0增量绘制不清空画布代码逻辑第一个目标使用 flag1 清空旧框后续目标 flag0 叠加绘制ARGB 颜色格式python运行box_color_ARGB 0xFF000000 | R16 | G8 | B最高字节 Alpha (FF 不透明)依次 R、G、B。2.4 disp.get_display_res()查询 HDMI 显示器支持的分辨率列表用于自动适配防止黑屏。python运行resolution_list disp.get_display_res()2.5 disp.close()释放显示硬件资源。3. 全局接口 srcampy.bind ()python运行srcampy.bind(源对象, 目标对象)支持绑定组合Camera → Display摄像头直通 HDMI 预览Camera → Encoder摄像头图像直接送入硬件 H.264/H.265 编码器录像 数据流走硬件 DMA不经过用户内存极致低延迟。三、srcampy 完整流水线对照你的 FCOS 代码plaintext1. cam.open_cam() → 启动MIPI CSI0开启ISP双通路硬件缩放 2. disp.display(0) → 打开视频图层 3. srcampy.bind(cam, disp) → 原始画面硬件直通HDMI 4. disp.display(3) → 切换到OSD绘图图层 循环 cam.get_img(2,512,512) → 获取ISP输出512×512 NV12 buffer models[0].forward(img) → BPU FCOS推理 多进程执行后处理 → 解码检测框 → disp.set_graph_rect / set_graph_word 在OSD图层绘制框四、srcampy 优势对比 cv2.VideoCapture表格特性srcampy (MIPI 专用)cv2.VideoCapture(V4L2)图像来源MIPI CSI 摄像头USB 摄像头RDK MIPI原生不支持图像格式直接输出 NV12只能读取 BGR/YUYV缩放操作ISP 硬件缩放零 CPUCPU resize占用算力直通 HDMI硬件 bind极低延迟软件转发延迟高OSD 叠加硬件图层绘制性能高需要 CPU 逐帧绘制图像多路输出支持同时输出多路分辨率单路输出五、高频踩坑清单工程调试重点CSI1 通道 video_index2不要写 1最常见错误cam.get_img(2,w,h)分辨率必须和 open_cam 通路匹配否则返回空OSD 图层绘制多进程并发容易闪烁建议收敛到同一个进程绘制程序异常退出务必调用cam.close_cam()否则 ISP 卡死重启才能恢复bind 之后原始画面不再经过 PythonPython 只能读取第二路推理尺寸图像NV12 是 packed 格式不要错误当作 RGB 处理HDMI 热插拔后需要重新执行get_display_res()刷新分辨率六、拓展能力你现有代码没有用到srcampy.Encoder()硬件 H.264/H.265 编码直接把摄像头 NV12 流转码保存视频无需 CPU 编码。python运行enc srcampy.Encoder() enc.encode(0, width, height)srcampy.Decoder()硬件解码 H264/H265 码流输出 NV12 图像送入 BPU 推理。七、最简使用模板单路 CSI0 摄像头python运行from hobot_vio_rdkx5 import libsrcampy as srcampy import numpy as np sensor_w, sensor_h 1920,1080 model_w, model_h 512,512 preview_w, preview_h 1920,1080 cam srcampy.Camera() # CSI0 0CSI1 2 cam.open_cam(0, -1, -1, [model_w, preview_w], [model_h, preview_h], sensor_h, sensor_w) disp srcampy.Display() disp.display(0, preview_w, preview_h) srcampy.bind(cam, disp) disp.display(3, preview_w, preview_h) while True: nv12_buf cam.get_img(2, model_w, model_h) frame np.frombuffer(nv12_buf, dtypenp.uint8) # frame 直接送入dnn forward推理 cam.close_cam() disp.close()

相关新闻

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 0:01:30 阅读更多 →
【Springboot毕设全套源码+文档】基于springboot校园闲置物品租售系统的设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot校园闲置物品租售系统的设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/24 0:01:30 阅读更多 →
2026免费远程控制软件真实横评:谁才是“真免费“?

2026免费远程控制软件真实横评:谁才是“真免费“?

"免费"是远程控制软件市场最大的流量密码。每款软件都在官网挂着"免费下载"的按钮,但实际用起来,有的限时长、有的限次数、有的限速、有的弹广告、有的直接检测商用封号——免费两个字,藏着多少套路? 我今天就…

2026/7/24 0:01:30 阅读更多 →

最新新闻

基于深度强化学习的电池储能系统优化控制实践

基于深度强化学习的电池储能系统优化控制实践

1. 项目概述在能源转型的大背景下,电池储能系统(BESS)作为平衡电网供需的关键技术,其运行效率直接影响着整个电力系统的经济性和稳定性。传统基于规则的充放电策略往往难以应对复杂多变的电网环境,而深度强化学习(DRL)因其强大的环境适应能力…

2026/7/24 0:10:33 阅读更多 →
影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成

影刀RPA 自动化舆情监控:关键词预警与报告生成 作者:林焱 写在前面 品牌负面舆情一旦爆发,几个小时内可能蔓延全网。靠人工每天刷微博、知乎、新闻,根本来不及。影刀可以帮你搭一套724小时的舆情监控系统:定时采集多…

2026/7/24 0:10:33 阅读更多 →
ArkUI Provider 和 Consumer 乱用怎么办:中式美食同类多层筛选页为什么别一路传参数

ArkUI Provider 和 Consumer 乱用怎么办:中式美食同类多层筛选页为什么别一路传参数

先把相关概念说清楚知识点在这个问题里怎么看自定义组件冻结功能用来写多页面栈、TabContent、LazyForEach 和 BuilderNode 混用时的刷新边界状态管理 V1 向 V2 迁移用来拆 State 到 Local、Param、Once、Event 的迁移判断Provider / Consumer用来解释跨层级双向同步&#xff0…

2026/7/24 0:10:33 阅读更多 →
【K8S 运维实战】11-资源管理Requests与Limits

【K8S 运维实战】11-资源管理Requests与Limits

资源管理:Requests/Limits 与 QoS 分级 一句话定位:为什么设了 Limits 还是被 OOM QoS 三级怎么用 ResourceQuota 实战。 写在前面 “我明明设了 memory limit 4G,Pod 还是 OOMKilled 了,这是什么玄学?”——这是我遇到过最经典的资源管理困惑。还有一类:“节点资源没用满,…

2026/7/24 0:10:33 阅读更多 →
OpenClaw+Kimi K2.5+Moltbook企业级AI工作流部署指南

OpenClaw+Kimi K2.5+Moltbook企业级AI工作流部署指南

1. OpenClawKimi K2.5Moltbook部署方案概述这个组合堪称当前最强大的AI工作流解决方案之一。OpenClaw作为自动化控制中枢,Kimi K2.5提供核心AI能力,Moltbook则负责交互界面呈现。三者的结合可以打造出一个智能程度极高的工作助手系统。我在实际部署过程中…

2026/7/24 0:09:32 阅读更多 →
AI毕业论文排版工具:10分钟解决格式难题

AI毕业论文排版工具:10分钟解决格式难题

1. 毕业论文排版痛点与解决方案每到毕业季,总能看到凌晨三点的图书馆里挤满了赶论文的学生。他们中至少有一半人不是在修改内容,而是在和格式较劲——页眉页脚对不齐、目录页码总出错、参考文献格式混乱。这些看似简单的排版问题,往往要消耗学…

2026/7/24 0:09:32 阅读更多 →

日新闻

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…

2026/7/24 0:00:29 阅读更多 →
AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口

AppCertDlls:进程创建路径上的 DLL 入口 AppCertDlls 位于 HKLM\System\CurrentControlSet\Control\Session Manager\AppCertDlls。本文的程序功能是只读列出这个键在 64 位和 32 位注册表视图中的全部值,并显示每条值的来源、名称、类型和可安全显示的数…

2026/7/24 0:00:29 阅读更多 →
我的编程之路:第一篇博客

我的编程之路:第一篇博客

大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…

2026/7/24 0:00:29 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻