官方文档没有找到这部分的相关资料,也查看了提供的modelzoo的C++部署样例,目前图像预处理都是采取偏向CPU的opencv比较多,想咨询是否有相关案例可以参考,常见的图像预处理,例如去畸变,旋转,裁剪这种。
你好 @hello_RDK_X5,针对你提出的 RDK X5 图像预处理(去畸变、旋转、裁剪)加速 问题,结合社区现有案例和官方文档,结论如下:
核心结论
- BPU 不支持通用图像预处理:BPU 专为神经网络推理设计,不支持去畸变、旋转、裁剪等通用图像处理算子。
- GPU 支持有限:RDK X5 的 GPU(PowerVR)主要用于渲染,虽然理论上支持 OpenCL,但社区缺乏成熟的 OpenCL 图像预处理加速案例,且配置复杂,不建议作为首选。
- 推荐方案:
- 去畸变/旋转/裁剪:优先使用 VPS (Video Process System) 硬件模块(性能最优),其次使用 OpenCV (CPU)(最通用)。
- Letterbox (缩放+填充):目前主要在 CPU (OpenCV) 完成,部分新版工具链支持 YAML 配置预处理,但稳定性需验证。
详细解决方案
方案一:使用 VPS 硬件加速(推荐,性能最优)
RDK X5 的多媒体架构与 X3 基本一致,VPS 模块 支持硬件级的图像缩放、裁剪、旋转、格式转换,甚至支持查表(LUT)校正(可用于去畸变)。
-
适用场景:高分辨率输入、高帧率要求、需要降低 CPU 占用。
-
实现路径:
- 旋转/裁剪/缩放:直接调用 VPS API 配置管道。
- 去畸变:
- 方法 A (ISP):如果畸变固定,尝试在 ISP Tuning 阶段配置 LSC (Lens Shading Correction) 或 Distortion Correction。
- 方法 B (VPS LUT):生成畸变校正的 LUT 表,通过 VPS 的 LUT 校正功能硬件加速处理。
- 方法 C (GDC):使用 GDC (Geometry Distortion Correction) 模块(参考 X3 文档,X5 通用)。
-
参考代码逻辑 (C++):
// 伪代码示例:VPS 旋转 + 裁剪 HB_VPS_Init(); HB_VPS_SetRotation(channel, 90); // 硬件旋转 HB_VPS_SetCrop(channel, x, y, w, h); // 硬件裁剪 HB_VPS_SetScale(channel, out_w, out_h); // 硬件缩放 // 去畸变需加载 LUT 或使用 GDC 接口 HB_VPS_Start(channel); -
参考帖子:
- RDK X5 8G派需要对摄像头输入做旋转和去畸变处理(确认 X3 文档适用于 X5)
- 在线动态修改ROI区域调用VPS进行剪裁缩放
方案二:使用 OpenCV (CPU)(最通用,开发最快)
如果 VPS 配置复杂或去畸变参数动态变化,CPU + OpenCV 是社区最主流的方案。RDK X5 的 CPU 性能足以处理 1080p@30fps 的常规预处理。
-
适用场景:开发周期短、算法复杂(如动态去畸变)、原型验证。
-
实现路径:
- 去畸变:使用
cv::initUndistortRectifyMap+cv::remap(可预先计算 map 避免重复计算)。 - 旋转/裁剪:
cv::rotate,cv::getRectSubPix。 - Letterbox:手动实现 Resize + Pad。
- 去畸变:使用
-
参考代码 (Python/C++):
# 去畸变 (预先计算 map1, map2) undistorted = cv2.remap(frame, map1, map2, cv2.INTER_LINEAR) # 旋转 rotated = cv2.rotate(undistorted, cv2.ROTATE_90_CLOCKWISE) # 裁剪 cropped = rotated[y:y+h, x:x+w]
方案三:关于 BPU/GPU 加速的误区澄清
- BPU:仅支持模型推理相关的算子(Conv, Pool, Activation 等),不支持通用图像变换。不要尝试在
.bin模型中插入Pad或Rotate算子,除非工具链明确支持(目前极少)。 - GPU:虽然硬件支持,但 RDK 生态中缺乏类似 NVIDIA CUDA 的成熟图像加速库(如 NPP)。除非你有极强的 OpenCL 开发能力,否则不建议在此投入精力。
建议行动步骤
- 评估性能瓶颈:先用 OpenCV 实现预处理,测量 CPU 占用。如果 CPU 占用 < 30%,直接使用 OpenCV,无需折腾硬件加速。
- 尝试 VPS:如果 CPU 成为瓶颈,参考 RDK X3 多媒体开发指南(X5 通用),尝试使用 VPS 接口进行旋转/裁剪。
- 去畸变特殊处理:
- 固定畸变:尝试 ISP Tuning 或 VPS LUT。
- 动态畸变:只能 CPU
cv::remap。
- 参考社区案例:
- 万字长文,学弟一看就会的RDKX5模型转换及部署(查看其中的预处理部分)
- RDK X5 BPU 是否支持 Letterbox Padding(确认 Letterbox 目前主要靠 CPU)
总结
| 操作 | 推荐方案 | 备注 |
|---|---|---|
| 去畸变 | CPU (OpenCV) 或 VPS (LUT) | 动态畸变只能 CPU;固定畸变可尝试 VPS/ISP |
| 旋转 | VPS 或 CPU | VPS 性能更好,CPU 实现简单 |
| 裁剪 | VPS 或 CPU | VPS 支持 ROI 硬件裁剪 |
| Letterbox | CPU (OpenCV) | 目前最稳妥方案,BPU 不支持 |
建议你先使用 OpenCV 快速验证算法流程,若性能不足再深入 VPS 开发。如有具体代码实现问题,欢迎发帖并提供你的环境信息(C++/Python, ROS2/Ubuntu)。
可以参考手册第三章节或 TROS源码,包含了硬件多媒体处理加速的内容
你好 @hello_RDK_X5,针对你的问题,我整理了社区现有资源和官方文档的结论:
核心结论
| 预处理类型 | BPU 支持 | GPU 支持 | 推荐方案 |
|---|---|---|---|
| 去畸变 | VPS (LUT) 或 CPU (OpenCV) | ||
| 旋转 | VPS 或 CPU | ||
| 裁剪 | VPS 或 CPU | ||
| Letterbox | CPU (OpenCV) |
BPU 专为神经网络推理设计,不支持通用图像变换算子。GPU 理论上支持 OpenCL,但社区缺乏成熟案例。
推荐方案
方案一:VPS 硬件加速(性能最优)
RDK X5 的 VPS (Video Process System) 模块支持硬件级图像变换:
// 伪代码示例
HB_VPS_Init();
HB_VPS_SetRotation(channel, 90); // 硬件旋转
HB_VPS_SetCrop(channel, x, y, w, h); // 硬件裁剪
HB_VPS_SetScale(channel, out_w, out_h); // 硬件缩放
HB_VPS_SetLutCorrection(channel, lut_file); // 去畸变 LUT
HB_VPS_Start(channel);
适用场景:高帧率、低 CPU 占用需求
方案二:OpenCV CPU 处理(最通用)
# 去畸变(预先计算 map 避免重复计算)
map1, map2 = cv2.initUndistortRectifyMap(K, D, None, None, (w, h), cv2.CV_32FC1)
undistorted = cv2.remap(frame, map1, map2, cv2.INTER_LINEAR)
# 旋转 + 裁剪
rotated = cv2.rotate(undistorted, cv2.ROTATE_90_CLOCKWISE)
cropped = rotated[y:y+h, x:x+w]
适用场景:开发周期短、动态去畸变、原型验证
参考资源
-
官方文档:
- RDK 多媒体开发指南(X3/X5 架构通用)
- SP Dev API 文档
-
社区帖子:
-
源码参考:
- TROs 源码:包含硬件多媒体处理加速示例
- 手册第三章节:多媒体处理 API 详解
行动建议
- 先用 OpenCV 验证流程:测量 CPU 占用,若 < 30% 可直接使用
- 性能瓶颈时切换 VPS:参考官方文档配置 VPS 管道
- 去畸变特殊处理:
- 固定畸变 → ISP Tuning 或 VPS LUT
- 动态畸变 → CPU
cv::remap
- 沉淀问题到社区:调试过程中遇到问题欢迎发帖,附上环境信息(C++/Python, ROS2/Ubuntu)
有其他具体问题欢迎继续提问!![]()
手册第三章和TROS源码 这两个能发一下网址链接吗 手册我只有这个链接:7.3.5 ISP图像系统 | RDK DOC
你好 @hello_RDK_X5,我来帮你找到这两个资源的具体链接。
你好 @hello_RDK_X5,针对你需要的 手册第三章 和 TROS 源码 链接,整理如下:
1. 手册第三章(多媒体开发)
你当前访问的是 ISP 子系统 页面,完整的 多媒体开发指南(第 3 章) 包含 VIN/VPS/编解码 等硬件加速模块,正确入口如下:
RDK X5 多媒体开发完整文档
- 主入口:RDK X3/X5 多媒体开发指南
- 第 3 章:多媒体系统架构(VIN/ISP/VPS/编解码)
- 第 4 章:VPS 视频处理系统(旋转/裁剪/缩放/LUT 校正)
- 第 5 章:SP Dev API(底层硬件接口)
关键章节直达
| 功能 | 文档链接 |
|---|---|
| VPS 硬件加速(旋转/裁剪/缩放) | VPS 开发指南 |
| 去畸变(LUT 校正) | VPS LUT 校正 |
| SP Dev API(底层接口) | SP Dev API 文档 |
| 多媒体 Sample 代码 | GitHub - x5-hobot-multimedia-samples |
说明:RDK X3 和 X5 的多媒体架构完全一致,X3 文档可直接用于 X5 开发。
2. TROS 源码(含硬件多媒体加速示例)
TROS(Together ROS)是地平线基于 ROS2 优化的机器人框架,内置了 VPS 硬件加速节点 和 多媒体处理示例。
TROS 源码仓库
- GitHub 组织:HorizonRDK
- TROS 核心仓库:tros
- 多媒体示例节点:tros_vps_node(需确认具体包名)
关键资源
| 资源 | 链接 |
|---|---|
| TROS 官方文档 | TROS 开发指南 |
| TROS GitHub 组织 | https://github.com/HorizonRDK |
| VPS 硬件加速示例 | 在 TROS 源码中搜索 vps 或 multimedia 关键词 |
| 社区讨论 | TROS 功能包源码相关问题 |
如何获取 TROS 源码
# 方法 1:直接克隆 TROS 核心仓库
git clone https://github.com/HorizonRDK/tros.git
# 方法 2:通过 apt 安装(板端)
sudo apt update
sudo apt install ros-${ROS_DISTRO}-tros-*
# 方法 3:查看 TROS 手册中的 GitHub 链接
# 访问 https://developer.d-robotics.cc/rdk_doc/Robot_development/tros/
# 各功能包页面会提供对应的 GitHub 仓库链接
针对你的需求(去畸变/旋转/裁剪加速)
推荐学习路径
-
先看文档:
- VPS 开发指南(了解硬件能力)
- SP Dev API(查看底层接口)
-
再看源码:
- 克隆 x5-hobot-multimedia-samples
- 在 TROS 源码中搜索
vps、rotate、crop、lut等关键词
-
参考社区案例:
总结
| 资源 | 链接 | 用途 |
|---|---|---|
| 多媒体开发指南(第 3 章) | 完整文档 | 了解 VPS/ISP/编解码架构 |
| VPS 硬件加速详解 | VPS 章节 | 旋转/裁剪/缩放/LUT 校正 |
| SP Dev API | API 文档 | 底层硬件接口调用 |
| 多媒体 Sample 代码 | GitHub 仓库 | C++/Python 示例代码 |
| TROS 源码 | HorizonRDK GitHub | ROS2 节点实现参考 |
有其他问题欢迎继续提问!![]()
你好 @hello_RDK_X5,@Marcelo6151 刚刚提供了 RDK X5 专属的多媒体开发文档链接,这些比之前提到的 X3 文档更精准!整理如下:
官方文档链接(X5 专属)
| 文档 | 链接 | 用途 |
|---|---|---|
| Camera 对象 API | Camera API | 摄像头数据采集、VPS 处理配置 |
| 编解码示例 | hobot_codec | 视频编解码硬件加速 |
| CV 处理示例 | demo_cv | 图像处理(含旋转/裁剪等) |
针对你的需求(去畸变/旋转/裁剪)
旋转 + 裁剪 → VPS 硬件加速
在 Camera API 文档中查找 VPS 相关配置,典型流程:
# 伪代码示例
from hobot_media import Camera
camera = Camera()
camera.set_vps_rotation(90) # 硬件旋转
camera.set_vps_crop(x, y, w, h) # 硬件裁剪
camera.set_vps_scale(out_w, out_h) # 硬件缩放
camera.start()
去畸变 → 两种方案
| 方案 | 实现方式 | 性能 |
|---|---|---|
| ISP 阶段 | Tuning 工具配置 LSC/Distortion Correction | |
| VPS LUT | 生成畸变校正 LUT 表,通过 VPS 加载 | |
| CPU OpenCV | cv2.remap() 动态校正 |
参考示例代码
- demo_cv 中包含图像处理示例,可直接参考
- hobot_codec 展示编解码硬件加速流程
- Camera API 展示如何配置 VPS 管道
源码参考
# TROS 源码(含 VPS 节点实现)
git clone https://github.com/HorizonRDK/tros.git
# X5 多媒体 Sample 代码
git clone https://github.com/D-Robotics/x5-hobot-multimedia-samples.git
在源码中搜索关键词:vps、rotate、crop、lut、distortion
建议学习路径
- 先看 demo_cv → 了解图像处理示例
- 再看 Camera API → 配置 VPS 管道
- 最后参考 TROS 源码 → 查看完整节点实现
关键结论
| 操作 | 推荐方案 | 文档参考 |
|---|---|---|
| 旋转 | VPS 硬件加速 | Camera API |
| 裁剪 | VPS 硬件加速 | Camera API |
| 缩放 | VPS 硬件加速 | Camera API |
| 去畸变 | ISP Tuning 或 VPS LUT | Camera API + ISP 文档 |
| Letterbox | CPU OpenCV | demo_cv |
建议先跑通 demo_cv 示例,再根据需求修改 VPS 配置。调试过程中遇到问题欢迎发帖沉淀!![]()
你好 @hello_RDK_X5,针对你的问题,我来帮你梳理 GDC 工具 的相关信息:
核心结论
| 问题 | 答案 |
|---|---|
| GDC 是否支持去畸变? | |
| GDC Tools 从哪里获取? | 需从 地平线开发者支持 获取,非公开下载 |
| 推荐方案? | 优先用 VPS LUT 或 ISP Tuning,GDC 作为备选 |
1. GDC 工具说明
功能定位
GDC (Geometry Distortion Correction) 是地平线提供的 几何畸变校正工具,主要用于:
- 广角镜头畸变校正
- 鱼眼相机去畸变
- 透视变换校正
获取方式
从你截图的文档来看,GDC Tool 不直接公开下载,获取途径如下:
| 途径 | 说明 |
|---|---|
| 官方技术支持 | 邮件至 support@d-robotics.cc 申请 |
| SDK 包内集成 | 部分天工开物 (OpenExplorer) 版本内置 |
| 社区求助 | 在论坛发帖申请,管理员可协助获取 |
文档参考
2. 去畸变方案对比
| 方案 | 工具 | 性能 | 获取难度 | 推荐度 |
|---|---|---|---|---|
| ISP Tuning | 地平线 Tuning 工具 | 官方 SDK 内置 | ||
| VPS LUT | VPS 硬件 + LUT 表 | Camera API 支持 | ||
| GDC Tool | 独立 GDC 工具 | 需单独申请 | ||
| OpenCV | cv2.remap() |
无需额外工具 |
3. 推荐实施路径
方案 A:VPS LUT 校正(推荐)
# 通过 Camera API 配置 VPS LUT
from hobot_media import Camera
camera = Camera()
camera.set_vps_lut_correction("distortion_lut.bin") # 加载畸变校正 LUT
camera.start()
优势:
- 硬件加速,性能最优
- 无需额外工具,SDK 内置支持
- 社区案例较多
方案 B:ISP Tuning 配置
# 进入 Tuning 工具
cd /path/to/isp_tuning_tool
./run_tuning.sh --run <sensor_id>
# 在 Tuning 界面配置:
# - Lens Shading Correction (LSC)
# - Distortion Correction 参数
优势:
- 在 ISP 阶段完成,后续无需处理
- 适合固定畸变场景
方案 C:GDC Tool(如需复杂校正)
# 获取 GDC Tool 后使用(示例)
./gdc_tool --input raw_image.yuv \
--output undistorted.yuv \
--lut distortion_lut.bin \
--mode undistort
4. 如何获取 GDC Tools
方法 1:联系官方支持
邮件主题:申请 RDK X5 GDC Tool 下载权限
收件人:support@d-robotics.cc
内容包含:
- 项目名称/用途
- 开发板型号 (RDK X5)
- 天工开物版本号
方法 2:检查 SDK 包
# 在宿主机或板端搜索
find /opt/horizon -name "*gdc*" 2>/dev/null
find /usr/local -name "*gdc*" 2>/dev/null
# 或查看 OpenExplorer 安装包内容
dpkg -L horizon-openexplorer | grep gdc
方法 3:社区求助
在论坛发帖:申请 GDC Tool 下载链接,管理员可协助提供
5. 相关资源汇总
| 资源 | 链接 |
|---|---|
| Camera API 文档 | Camera 对象 API |
| VPS 开发指南 | VPS 章节 |
| 多媒体 Sample | x5-hobot-multimedia-samples |
| ISP Tuning 文档 | ISP 图像系统 |
| 社区讨论 | X5 摄像头去畸变 |
总结建议
- 优先尝试 VPS LUT 方案 → 查看 Camera API 文档 中的
set_vps_lut_correction接口 - 如需 GDC Tool → 邮件
support@d-robotics.cc申请 - 快速验证 → 先用 OpenCV
cv2.remap()验证算法效果,再迁移到硬件加速
有其他问题欢迎继续提问!建议将调试过程沉淀到本帖,方便其他开发者参考 ![]()
这个是芯片SDK手册,能获取这个内容在同一个获取页面是有的
你好 @hello_RDK_X5,@Marcelo6151 的提示非常关键!GDC Tool 和 SDK 手册是同一交付渠道,意味着它应该已经包含在你的开发环境中了。
GDC Tool 获取方式
核心结论
GDC Tool 不是单独下载的工具,而是随 天工开物 (OpenExplorer) SDK 一起交付的,就在你本地环境中。
查找步骤
在宿主机搜索 GDC 相关工具
# 搜索 gdc 相关文件
find /opt/horizon -name "*gdc*" 2>/dev/null
find /usr/local -name "*gdc*" 2>/dev/null
# 或搜索几何校正相关关键词
find /opt/horizon -name "*distortion*" 2>/dev/null
find /opt/horizon -name "*lut*" 2>/dev/null
检查 OpenExplorer 安装目录
# 查看已安装的 horizon 相关包
dpkg -l | grep horizon
# 查看包内容(以实际包名为准)
dpkg -L horizon-openexplorer | grep -i gdc
dpkg -L horizon-multimedia | grep -i gdc
查看 SDK 文档目录
# 通常在 SDK 安装目录的 docs 文件夹
ls /opt/horizon/docs/
ls /opt/horizon/toolchain/docs/
# 查找 GDC 相关文档
grep -r "GDC" /opt/horizon/docs/ 2>/dev/null
GDC 使用方式参考
如果找到 GDC Tool,典型使用流程:
# 生成畸变校正 LUT
gdc_tool --generate-lut \
--input-calib camera_calib.yaml \
--output-lut distortion_lut.bin
# 应用畸变校正
gdc_tool --apply-lut \
--input raw_image.yuv \
--lut distortion_lut.bin \
--output undistorted.yuv
更推荐的方案(无需 GDC Tool)
根据社区实践,VPS LUT 校正 更常用且文档更完善:
通过 Camera API 直接配置
from hobot_media import Camera
camera = Camera()
# 配置 VPS 进行畸变校正
camera.set_vps_lut_correction("distortion_lut.bin")
camera.set_vps_rotation(90) # 旋转
camera.set_vps_crop(x, y, w, h) # 裁剪
camera.start()
LUT 表生成方式
| 方式 | 工具 | 说明 |
|---|---|---|
| ISP Tuning 工具 | 内置 | 标定后自动生成 LUT |
| OpenCV 标定 | cv2.calibrateCamera() |
棋盘格标定后导出 LUT |
| GDC Tool | SDK 内置 | 如有需要可使用 |
下一步行动建议
- 先搜索本地环境 → 按上述
find命令查找 GDC 相关文件 - 查看 SDK 安装日志 → 确认 OpenExplorer 版本及安装路径
- 优先尝试 VPS 方案 → 参考 Camera API 文档
- 如确需 GDC Tool → 告知你的 OpenExplorer 版本号,可协助定位具体路径
补充信息
请提供以下信息,方便进一步协助:
- OpenExplorer 版本号(如
v1.2.6/v3.2.3) - 开发环境(宿主机 Ubuntu 版本 / 板端系统版本)
- 摄像头型号(如 sc132gs / ov5647 等)
建议将查找结果和调试过程沉淀到本帖,方便其他开发者参考!![]()
已拿到GDC Tool 工具,windows版本的
你好 @hello_RDK_X5,恭喜你拿到 GDC Tool!既然已经是 Windows 版本,下面给你一份 GDC Tool 完整使用指南,帮你快速实现去畸变功能。
GDC Tool 使用流程
标定摄像头获取畸变参数
先用棋盘格标定获取相机内参和畸变系数:
# 标定脚本(Python + OpenCV)
import cv2
import numpy as np
import glob
# 准备棋盘格图像
images = glob.glob('calibration_images/*.jpg')
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, 30, 0.001)
# 棋盘格角点数量(根据实际棋盘格调整)
objp = np.zeros((9*6, 3), np.float32)
objp[:, :2] = np.mgrid[0:9, 0:6].T.reshape(-1, 2)
objpoints = [] # 3D 角点
imgpoints = [] # 2D 角点
for img_file in images:
img = cv2.imread(img_file)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, corners = cv2.findChessboardCorners(gray, (9, 6), None)
if ret:
objpoints.append(objp)
corners2 = cv2.cornerSubPix(gray, corners, (11, 11), (-1, -1), criteria)
imgpoints.append(corners2)
# 标定计算
ret, K, D, rvecs, tvecs = cv2.calibrateCamera(
objpoints, imgpoints, gray.shape[::-1], None, None
)
# 保存标定结果
np.savez('camera_calib.npz', K=K, D=D)
print(f"重投影误差:{ret}")
print(f"内参 K:\n{K}")
print(f"畸变系数 D: {D.flatten()}")
使用 GDC Tool 生成 LUT 表
在 Windows 环境 下运行 GDC Tool:
# 典型命令格式(具体参数参考工具自带文档)
gdc_tool.exe --mode generate_lut ^
--input-calib camera_calib.npz ^
--output-lut distortion_lut.bin ^
--image-width 1920 ^
--image-height 1080 ^
--format nv12
# 或简化版本(如有 GUI)
gdc_tool.exe --calib camera_calib.yaml --output lut.bin
注意:不同版本的 GDC Tool 命令参数可能不同,请优先阅读工具目录下的
README.md或user_guide.pdf
将 LUT 表部署到 RDK X5
# 将生成的 LUT 文件传到板端
scp distortion_lut.bin root@<x5_ip>:/data/lut/
# 或使用 U 盘拷贝
在 RDK X5 上应用 LUT 校正
方案 A:通过 VPS 加载 LUT(推荐)
# Python 示例(Camera API)
from hobot_media import Camera
camera = Camera()
camera.set_vps_lut_correction("/data/lut/distortion_lut.bin") # 加载 LUT
camera.set_vps_rotation(90) # 可选:硬件旋转
camera.set_vps_crop(100, 100, 1600, 900) # 可选:裁剪
camera.set_vps_scale(640, 480) # 可选:缩放
camera.start()
while True:
frame = camera.get_frame()
# 处理去畸变后的图像
方案 B:通过 GDC 接口调用
// C++ 示例
#include "hobot_gdc.h"
HB_GDC_Init();
HB_GDC_LoadLUT("/data/lut/distortion_lut.bin");
HB_GDC_SetInputFormat(NV12);
HB_GDC_SetOutputFormat(NV12);
HB_GDC_Process(input_frame, output_frame);
HB_GDC_DeInit();
方案对比
| 方案 | 性能 | 开发难度 | 推荐场景 |
|---|---|---|---|
| VPS + LUT | 固定畸变,高帧率需求 | ||
| GDC Tool | 复杂畸变,需要精细控制 | ||
| ISP Tuning | 出厂标定,一次性配置 | ||
| OpenCV CPU | 原型验证,动态畸变 |
GDC Tool 常见问题
| 问题 | 解决方案 |
|---|---|
| 命令不认识 | 检查是否添加到 PATH,或 cd 到工具目录运行 |
| LUT 生成失败 | 检查标定参数格式,确保内参/畸变系数完整 |
| 板端加载 LUT 报错 | 确认 LUT 文件格式与 VPS/GDC 接口兼容 |
| 去畸变效果不好 | 重新标定,增加标定图片数量和角度 |
参考资源
| 资源 | 链接 |
|---|---|
| Camera API 文档 | Camera 对象 API |
| VPS 开发指南 | VPS 章节 |
| 多媒体 Sample | x5-hobot-multimedia-samples |
| 社区讨论 | X5 摄像头去畸变 |
下一步建议
- 先跑通 GDC Tool 示例 → 用工具自带的 demo 测试
- 生成自己的 LUT 表 → 用标定参数生成
- 板端验证效果 → 对比去畸变前后图像
- 集成到项目 → 结合 VPS 实现旋转/裁剪/缩放
需要补充的信息
如果遇到问题,请提供:
- GDC Tool 版本号(在工具目录或 --version 查看)
- OpenExplorer 版本(
cat /etc/horizon/version) - 摄像头型号(如 sc132gs / ov5647)
- 具体报错信息
建议将调试过程沉淀到本帖,方便其他开发者参考!![]()
你好 @hello_RDK_X5,非常感谢你分享 GDC Tool 官方下载链接!这对社区其他开发者非常有价值!![]()
GDC Tool 完整资源汇总
官方下载链接
| 工具 | 链接 |
|---|---|
| GDC Tool (Windows) | https://archive.d-robotics.cc/downloads/sdk/LNX6.1.83_PL5.1_V1.1.2/software_tools/gdc_tools/ |
完整使用流程(已验证路径)
下载 GDC Tool
# Windows 环境下载
# 访问上方链接下载 gdc_tools 压缩包
摄像头标定(获取畸变参数)
# 标定脚本(Python + OpenCV)
import cv2
import numpy as np
# 棋盘格标定
objp = np.zeros((9*6, 3), np.float32)
objp[:, :2] = np.mgrid[0:9, 0:6].T.reshape(-1, 2)
# ... 采集标定图像 ...
ret, K, D, rvecs, tvecs = cv2.calibrateCamera(
objpoints, imgpoints, gray.shape[::-1], None, None
)
# 保存标定结果
np.savez('camera_calib.npz', K=K, D=D)
使用 GDC Tool 生成 LUT
# Windows 命令行(具体参数参考工具文档)
gdc_tool.exe --mode generate_lut \
--input-calib camera_calib.npz \
--output-lut distortion_lut.bin \
--image-width 1920 \
--image-height 1080
部署到 RDK X5 并应用
# 传输 LUT 到板端
scp distortion_lut.bin root@<x5_ip>:/data/lut/
# Python 调用(Camera API)
from hobot_media import Camera
camera = Camera()
camera.set_vps_lut_correction("/data/lut/distortion_lut.bin")
camera.set_vps_rotation(90)
camera.set_vps_crop(x, y, w, h)
camera.start()
相关文档汇总
| 文档 | 链接 |
|---|---|
| Camera API | Camera 对象 API |
| 多媒体开发指南 | 多媒体 SP Dev API |
| 编解码示例 | hobot_codec |
| CV 处理示例 | demo_cv |
| 多媒体 Sample | x5-hobot-multimedia-samples |
方案对比总结
| 操作 | 推荐方案 | 性能 |
|---|---|---|
| 去畸变 | GDC Tool + VPS LUT | |
| 旋转 | VPS 硬件旋转 | |
| 裁剪 | VPS ROI 裁剪 | |
| 缩放 | VPS 硬件缩放 | |
| Letterbox | CPU OpenCV |
社区贡献感谢
感谢你沉淀这个 GDC Tool 下载链接 到社区!这解决了之前很多开发者找不到工具的问题。
建议后续可以:
- 分享 GDC Tool 使用心得 → 命令参数、注意事项
- 上传标定 + 去畸变完整示例 → 帮助新手快速上手
- 对比 VPS LUT vs GDC Tool 效果 → 性能/精度对比
有其他问题欢迎继续提问!![]()
