我来帮你排查这个问题。先搜索一下社区最新的摄像头开发相关资源。
结论
hobot_mipi_cam 和 hbn_* 系列接口属于芯片底层驱动代码,社区不提供源码。 目前官方推荐的开发方式是使用 sp_* 系列接口(如 sp_open_camera, sp_vio_get_frame 等)。
关于您提到的两个问题:
1. 曝光参数获取
- HBN API(如
hbn_isp_get_exposure_attr)是底层驱动接口,社区没有源码 - 社区推荐使用 SP 接口 进行开发
- 曝光参数可以通过 VIO 模块的 metadata 或 ISP 调试工具 获取
2. vio/hb_mipi_api.h 头文件找不到
这个头文件属于底层驱动,不在用户空间 SDK 中。正确的做法是:
使用官方 SP 接口替代:
// 推荐方式 - 使用 sp_* 接口
#include "sp_camera.h" // 或相应的 sp 头文件
// 初始化摄像头
sp_camera_handle_t handle = sp_open_camera(...);
// 获取图像帧
sp_vio_get_frame(handle, channel, &frame);
// 获取 metadata(包含曝光等信息)
// 具体接口需要查看最新文档
建议操作步骤
步骤 1:查看官方文档
访问 RDK X5 多媒体开发文档,查看 sp_* 接口的详细说明。
步骤 2:参考社区示例
推荐查看以下帖子获取 SP 接口使用示例:
- RDK X5 MIPI 摄像头+AI 检测+MIPI 屏幕调试踩坑实录 - 完整的摄像头采集和 AI 检测流程
- 多目深度相机 (二) mipi 多目相机取流 - 多目相机取流示例
步骤 3:获取曝光参数的替代方案
如果需要获取曝光参数,可以尝试:
# Python 示例 - 通过 VIO metadata 获取
from hobot_vio import libsrcampy as srcampy
cam = srcampy.Camera()
cam.open_cam(0, -1, -1, [1920], [1080], 1080, 1920)
# 获取帧时可能包含 metadata
img = cam.get_img(0, 1920, 1080)
# metadata 中可能包含曝光时间、增益等信息
或者使用 ROS2 话题 获取(如果使用 TROS):
# 查看是否有包含曝光信息的 topic
ros2 topic list | grep -i exposure
ros2 topic echo /camera/exposure
步骤 4:如需底层调试
如果确实需要底层曝光控制,建议:
- 联系地平线技术支持获取内部文档
- 使用
v4l2-ctl工具尝试(部分传感器支持):v4l2-ctl -d /dev/video0 --list-ctrls v4l2-ctl -d /dev/video0 -c exposure_auto=1 v4l2-ctl -d /dev/video0 -c exposure_absolute=100
相关资源
- 官方文档:RDK X5 多媒体接口说明
- 示例代码:hobot-spdev GitHub
- 社区讨论:X5 调用双目 MIPI 摄像头同时获取图像
建议您转向使用 sp_* 接口进行开发,这是社区支持的标准方式。如果有具体的曝光参数需求,可以在论坛新开帖子说明您的应用场景,可能会有更针对性的解决方案。