RDK-X5开发板端部署的模型涉及到复杂的图像预处理部分,是否支持BPU或者GPU的加速处理

官方文档没有找到这部分的相关资料,也查看了提供的modelzoo的C++部署样例,目前图像预处理都是采取偏向CPU的opencv比较多,想咨询是否有相关案例可以参考,常见的图像预处理,例如去畸变,旋转,裁剪这种。

你好 @hello_RDK_X5,针对你提出的 RDK X5 图像预处理(去畸变、旋转、裁剪)加速 问题,结合社区现有案例和官方文档,结论如下:

核心结论

  1. BPU 不支持通用图像预处理:BPU 专为神经网络推理设计,不支持去畸变、旋转、裁剪等通用图像处理算子。
  2. GPU 支持有限:RDK X5 的 GPU(PowerVR)主要用于渲染,虽然理论上支持 OpenCL,但社区缺乏成熟的 OpenCL 图像预处理加速案例,且配置复杂,不建议作为首选。
  3. 推荐方案
    • 去畸变/旋转/裁剪:优先使用 VPS (Video Process System) 硬件模块(性能最优),其次使用 OpenCV (CPU)(最通用)。
    • Letterbox (缩放+填充):目前主要在 CPU (OpenCV) 完成,部分新版工具链支持 YAML 配置预处理,但稳定性需验证。

详细解决方案

方案一:使用 VPS 硬件加速(推荐,性能最优)

RDK X5 的多媒体架构与 X3 基本一致,VPS 模块 支持硬件级的图像缩放、裁剪、旋转、格式转换,甚至支持查表(LUT)校正(可用于去畸变)。

  • 适用场景:高分辨率输入、高帧率要求、需要降低 CPU 占用。

  • 实现路径

    1. 旋转/裁剪/缩放:直接调用 VPS API 配置管道。
    2. 去畸变
      • 方法 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);
    
  • 参考帖子

方案二:使用 OpenCV (CPU)(最通用,开发最快)

如果 VPS 配置复杂或去畸变参数动态变化,CPU + OpenCV 是社区最主流的方案。RDK X5 的 CPU 性能足以处理 1080p@30fps 的常规预处理。

  • 适用场景:开发周期短、算法复杂(如动态去畸变)、原型验证。

  • 实现路径

    1. 去畸变:使用 cv::initUndistortRectifyMap + cv::remap(可预先计算 map 避免重复计算)。
    2. 旋转/裁剪cv::rotate, cv::getRectSubPix
    3. 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 模型中插入 PadRotate 算子,除非工具链明确支持(目前极少)。
  • GPU:虽然硬件支持,但 RDK 生态中缺乏类似 NVIDIA CUDA 的成熟图像加速库(如 NPP)。除非你有极强的 OpenCL 开发能力,否则不建议在此投入精力。

建议行动步骤

  1. 评估性能瓶颈:先用 OpenCV 实现预处理,测量 CPU 占用。如果 CPU 占用 < 30%,直接使用 OpenCV,无需折腾硬件加速。
  2. 尝试 VPS:如果 CPU 成为瓶颈,参考 RDK X3 多媒体开发指南(X5 通用),尝试使用 VPS 接口进行旋转/裁剪。
  3. 去畸变特殊处理
    • 固定畸变:尝试 ISP Tuning 或 VPS LUT。
    • 动态畸变:只能 CPU cv::remap
  4. 参考社区案例

总结

操作 推荐方案 备注
去畸变 CPU (OpenCV)VPS (LUT) 动态畸变只能 CPU;固定畸变可尝试 VPS/ISP
旋转 VPSCPU VPS 性能更好,CPU 实现简单
裁剪 VPSCPU VPS 支持 ROI 硬件裁剪
Letterbox CPU (OpenCV) 目前最稳妥方案,BPU 不支持

建议你先使用 OpenCV 快速验证算法流程,若性能不足再深入 VPS 开发。如有具体代码实现问题,欢迎发帖并提供你的环境信息(C++/Python, ROS2/Ubuntu)。

可以参考手册第三章节或 TROS源码,包含了硬件多媒体处理加速的内容

你好 @hello_RDK_X5,针对你的问题,我整理了社区现有资源和官方文档的结论:


核心结论

预处理类型 BPU 支持 GPU 支持 推荐方案
去畸变 :cross_mark: :warning: 有限 VPS (LUT)CPU (OpenCV)
旋转 :cross_mark: :warning: 有限 VPSCPU
裁剪 :cross_mark: :warning: 有限 VPSCPU
Letterbox :cross_mark: :warning: 有限 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]

适用场景:开发周期短、动态去畸变、原型验证


参考资源

  1. 官方文档

  2. 社区帖子

  3. 源码参考

    • TROs 源码:包含硬件多媒体处理加速示例
    • 手册第三章节:多媒体处理 API 详解

行动建议

  1. 先用 OpenCV 验证流程:测量 CPU 占用,若 < 30% 可直接使用
  2. 性能瓶颈时切换 VPS:参考官方文档配置 VPS 管道
  3. 去畸变特殊处理
    • 固定畸变 → ISP Tuning 或 VPS LUT
    • 动态畸变 → CPU cv::remap
  4. 沉淀问题到社区:调试过程中遇到问题欢迎发帖,附上环境信息(C++/Python, ROS2/Ubuntu)

有其他具体问题欢迎继续提问!:rocket:

手册第三章和TROS源码 这两个能发一下网址链接吗 手册我只有这个链接:7.3.5 ISP图像系统 | RDK DOC

你好 @hello_RDK_X5,我来帮你找到这两个资源的具体链接。

你好 @hello_RDK_X5,针对你需要的 手册第三章TROS 源码 链接,整理如下:


:books: 1. 手册第三章(多媒体开发)

你当前访问的是 ISP 子系统 页面,完整的 多媒体开发指南(第 3 章) 包含 VIN/VPS/编解码 等硬件加速模块,正确入口如下:

:white_check_mark: RDK X5 多媒体开发完整文档

  • 主入口RDK X3/X5 多媒体开发指南
    • 第 3 章:多媒体系统架构(VIN/ISP/VPS/编解码)
    • 第 4 章:VPS 视频处理系统(旋转/裁剪/缩放/LUT 校正)
    • 第 5 章:SP Dev API(底层硬件接口)

:link: 关键章节直达

功能 文档链接
VPS 硬件加速(旋转/裁剪/缩放) VPS 开发指南
去畸变(LUT 校正) VPS LUT 校正
SP Dev API(底层接口) SP Dev API 文档
多媒体 Sample 代码 GitHub - x5-hobot-multimedia-samples

:light_bulb: 说明:RDK X3 和 X5 的多媒体架构完全一致,X3 文档可直接用于 X5 开发。


:laptop: 2. TROS 源码(含硬件多媒体加速示例)

TROS(Together ROS)是地平线基于 ROS2 优化的机器人框架,内置了 VPS 硬件加速节点多媒体处理示例

:white_check_mark: TROS 源码仓库

:link: 关键资源

资源 链接
TROS 官方文档 TROS 开发指南
TROS GitHub 组织 https://github.com/HorizonRDK
VPS 硬件加速示例 在 TROS 源码中搜索 vpsmultimedia 关键词
社区讨论 TROS 功能包源码相关问题

:package: 如何获取 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 仓库链接

:bullseye: 针对你的需求(去畸变/旋转/裁剪加速)

推荐学习路径

  1. 先看文档

  2. 再看源码

  3. 参考社区案例


:pushpin: 总结

资源 链接 用途
多媒体开发指南(第 3 章) 完整文档 了解 VPS/ISP/编解码架构
VPS 硬件加速详解 VPS 章节 旋转/裁剪/缩放/LUT 校正
SP Dev API API 文档 底层硬件接口调用
多媒体 Sample 代码 GitHub 仓库 C++/Python 示例代码
TROS 源码 HorizonRDK GitHub ROS2 节点实现参考

有其他问题欢迎继续提问!:rocket:

你好 @hello_RDK_X5@Marcelo6151 刚刚提供了 RDK X5 专属的多媒体开发文档链接,这些比之前提到的 X3 文档更精准!整理如下:


:books: 官方文档链接(X5 专属)

文档 链接 用途
Camera 对象 API Camera API 摄像头数据采集、VPS 处理配置
编解码示例 hobot_codec 视频编解码硬件加速
CV 处理示例 demo_cv 图像处理(含旋转/裁剪等)

:bullseye: 针对你的需求(去畸变/旋转/裁剪)

:one: 旋转 + 裁剪 → 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()

:two: 去畸变 → 两种方案

方案 实现方式 性能
ISP 阶段 Tuning 工具配置 LSC/Distortion Correction :star::star::star: 最优
VPS LUT 生成畸变校正 LUT 表,通过 VPS 加载 :star::star: 较好
CPU OpenCV cv2.remap() 动态校正 :star: 通用但占用 CPU

:three: 参考示例代码

  • demo_cv 中包含图像处理示例,可直接参考
  • hobot_codec 展示编解码硬件加速流程
  • Camera API 展示如何配置 VPS 管道

:package: 源码参考

# TROS 源码(含 VPS 节点实现)
git clone https://github.com/HorizonRDK/tros.git

# X5 多媒体 Sample 代码
git clone https://github.com/D-Robotics/x5-hobot-multimedia-samples.git

在源码中搜索关键词:vpsrotatecroplutdistortion


:compass: 建议学习路径

  1. 先看 demo_cv → 了解图像处理示例
  2. 再看 Camera API → 配置 VPS 管道
  3. 最后参考 TROS 源码 → 查看完整节点实现

:light_bulb: 关键结论

操作 推荐方案 文档参考
旋转 VPS 硬件加速 Camera API
裁剪 VPS 硬件加速 Camera API
缩放 VPS 硬件加速 Camera API
去畸变 ISP Tuning 或 VPS LUT Camera API + ISP 文档
Letterbox CPU OpenCV demo_cv

建议先跑通 demo_cv 示例,再根据需求修改 VPS 配置。调试过程中遇到问题欢迎发帖沉淀!:rocket:

我看了第三章的文档 GDC工具是不是可以支持对图像做去畸变操作?另外GDC Tools工具从哪里拿到 有具体网址吗?这个不知道是指在哪

你好 @hello_RDK_X5,针对你的问题,我来帮你梳理 GDC 工具 的相关信息:


:white_check_mark: 核心结论

问题 答案
GDC 是否支持去畸变? :white_check_mark: 支持,GDC (Geometry Distortion Correction) 专为几何畸变校正设计
GDC Tools 从哪里获取? 需从 地平线开发者支持 获取,非公开下载
推荐方案? 优先用 VPS LUTISP Tuning,GDC 作为备选

:books: 1. GDC 工具说明

功能定位

GDC (Geometry Distortion Correction) 是地平线提供的 几何畸变校正工具,主要用于:

  • 广角镜头畸变校正
  • 鱼眼相机去畸变
  • 透视变换校正

获取方式

从你截图的文档来看,GDC Tool 不直接公开下载,获取途径如下:

途径 说明
官方技术支持 邮件至 support@d-robotics.cc 申请
SDK 包内集成 部分天工开物 (OpenExplorer) 版本内置
社区求助 在论坛发帖申请,管理员可协助获取

文档参考


:bullseye: 2. 去畸变方案对比

方案 工具 性能 获取难度 推荐度
ISP Tuning 地平线 Tuning 工具 :star::star::star: 官方 SDK 内置 :star::star::star: 首选
VPS LUT VPS 硬件 + LUT 表 :star::star::star: Camera API 支持 :star::star::star: 首选
GDC Tool 独立 GDC 工具 :star::star: 需单独申请 :star::star: 备选
OpenCV cv2.remap() :star: 无需额外工具 :star::star: 通用方案

:hammer_and_wrench: 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

:package: 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 下载链接,管理员可协助提供


:link: 5. 相关资源汇总

资源 链接
Camera API 文档 Camera 对象 API
VPS 开发指南 VPS 章节
多媒体 Sample x5-hobot-multimedia-samples
ISP Tuning 文档 ISP 图像系统
社区讨论 X5 摄像头去畸变

:pushpin: 总结建议

  1. 优先尝试 VPS LUT 方案 → 查看 Camera API 文档 中的 set_vps_lut_correction 接口
  2. 如需 GDC Tool → 邮件 support@d-robotics.cc 申请
  3. 快速验证 → 先用 OpenCV cv2.remap() 验证算法效果,再迁移到硬件加速

有其他问题欢迎继续提问!建议将调试过程沉淀到本帖,方便其他开发者参考 :rocket:

这个是芯片SDK手册,能获取这个内容在同一个获取页面是有的

你好 @hello_RDK_X5@Marcelo6151 的提示非常关键!GDC Tool 和 SDK 手册是同一交付渠道,意味着它应该已经包含在你的开发环境中了。


:magnifying_glass_tilted_left: GDC Tool 获取方式

:white_check_mark: 核心结论

GDC Tool 不是单独下载的工具,而是随 天工开物 (OpenExplorer) SDK 一起交付的,就在你本地环境中。


:package: 查找步骤

:one: 在宿主机搜索 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

:two: 检查 OpenExplorer 安装目录

# 查看已安装的 horizon 相关包
dpkg -l | grep horizon

# 查看包内容(以实际包名为准)
dpkg -L horizon-openexplorer | grep -i gdc
dpkg -L horizon-multimedia | grep -i gdc

:three: 查看 SDK 文档目录

# 通常在 SDK 安装目录的 docs 文件夹
ls /opt/horizon/docs/
ls /opt/horizon/toolchain/docs/

# 查找 GDC 相关文档
grep -r "GDC" /opt/horizon/docs/ 2>/dev/null

:hammer_and_wrench: 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

:bullseye: 更推荐的方案(无需 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 内置 如有需要可使用

:pushpin: 下一步行动建议

  1. 先搜索本地环境 → 按上述 find 命令查找 GDC 相关文件
  2. 查看 SDK 安装日志 → 确认 OpenExplorer 版本及安装路径
  3. 优先尝试 VPS 方案 → 参考 Camera API 文档
  4. 如确需 GDC Tool → 告知你的 OpenExplorer 版本号,可协助定位具体路径

:light_bulb: 补充信息

请提供以下信息,方便进一步协助:

  • OpenExplorer 版本号(如 v1.2.6 / v3.2.3
  • 开发环境(宿主机 Ubuntu 版本 / 板端系统版本)
  • 摄像头型号(如 sc132gs / ov5647 等)

建议将查找结果和调试过程沉淀到本帖,方便其他开发者参考!:rocket:

已拿到GDC Tool 工具,windows版本的

你好 @hello_RDK_X5,恭喜你拿到 GDC Tool!既然已经是 Windows 版本,下面给你一份 GDC Tool 完整使用指南,帮你快速实现去畸变功能。


:bullseye: GDC Tool 使用流程

:one: 标定摄像头获取畸变参数

先用棋盘格标定获取相机内参和畸变系数:

# 标定脚本(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()}")

:two: 使用 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

:light_bulb: 注意:不同版本的 GDC Tool 命令参数可能不同,请优先阅读工具目录下的 README.mduser_guide.pdf


:three: 将 LUT 表部署到 RDK X5

# 将生成的 LUT 文件传到板端
scp distortion_lut.bin root@<x5_ip>:/data/lut/

# 或使用 U 盘拷贝

:four: 在 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();

:bar_chart: 方案对比

方案 性能 开发难度 推荐场景
VPS + LUT :star::star::star: :star::star: 固定畸变,高帧率需求
GDC Tool :star::star::star: :star::star::star: 复杂畸变,需要精细控制
ISP Tuning :star::star::star: :star::star: 出厂标定,一次性配置
OpenCV CPU :star: :star: 原型验证,动态畸变

:magnifying_glass_tilted_left: GDC Tool 常见问题

问题 解决方案
命令不认识 检查是否添加到 PATH,或 cd 到工具目录运行
LUT 生成失败 检查标定参数格式,确保内参/畸变系数完整
板端加载 LUT 报错 确认 LUT 文件格式与 VPS/GDC 接口兼容
去畸变效果不好 重新标定,增加标定图片数量和角度

:books: 参考资源

资源 链接
Camera API 文档 Camera 对象 API
VPS 开发指南 VPS 章节
多媒体 Sample x5-hobot-multimedia-samples
社区讨论 X5 摄像头去畸变

:pushpin: 下一步建议

  1. 先跑通 GDC Tool 示例 → 用工具自带的 demo 测试
  2. 生成自己的 LUT 表 → 用标定参数生成
  3. 板端验证效果 → 对比去畸变前后图像
  4. 集成到项目 → 结合 VPS 实现旋转/裁剪/缩放

:light_bulb: 需要补充的信息

如果遇到问题,请提供:

  • GDC Tool 版本号(在工具目录或 --version 查看)
  • OpenExplorer 版本cat /etc/horizon/version
  • 摄像头型号(如 sc132gs / ov5647)
  • 具体报错信息

建议将调试过程沉淀到本帖,方便其他开发者参考!:rocket:

工具下载链接:Index of /downloads/sdk/LNX6.1.83_PL5.1_V1.1.2/software_tools/gdc_tools/

你好 @hello_RDK_X5,非常感谢你分享 GDC Tool 官方下载链接!这对社区其他开发者非常有价值!:tada:


:package: GDC Tool 完整资源汇总

:white_check_mark: 官方下载链接


:bullseye: 完整使用流程(已验证路径)

:one: 下载 GDC Tool

# Windows 环境下载
# 访问上方链接下载 gdc_tools 压缩包

:two: 摄像头标定(获取畸变参数)

# 标定脚本(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)

:three: 使用 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

:four: 部署到 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()

:books: 相关文档汇总

文档 链接
Camera API Camera 对象 API
多媒体开发指南 多媒体 SP Dev API
编解码示例 hobot_codec
CV 处理示例 demo_cv
多媒体 Sample x5-hobot-multimedia-samples

:light_bulb: 方案对比总结

操作 推荐方案 性能
去畸变 GDC Tool + VPS LUT :star::star::star: 硬件加速
旋转 VPS 硬件旋转 :star::star::star: 硬件加速
裁剪 VPS ROI 裁剪 :star::star::star: 硬件加速
缩放 VPS 硬件缩放 :star::star::star: 硬件加速
Letterbox CPU OpenCV :star::star: 通用方案

:folded_hands: 社区贡献感谢

感谢你沉淀这个 GDC Tool 下载链接 到社区!这解决了之前很多开发者找不到工具的问题。

建议后续可以:

  1. 分享 GDC Tool 使用心得 → 命令参数、注意事项
  2. 上传标定 + 去畸变完整示例 → 帮助新手快速上手
  3. 对比 VPS LUT vs GDC Tool 效果 → 性能/精度对比

有其他问题欢迎继续提问!:rocket:

1 个赞