#include “hb_camera_interface.h”-
#include “hbn_api.h”
hbn_vnode_getframe(handle, channel, 1000, &out_img);-
hbn_isp_get_exposure_attr(isp_node_handle, &exp_attr);
想要查看图像每帧的曝光时间参数等信息,找不到上述函数的相关源码。
#include “hb_camera_interface.h”-
#include “hbn_api.h”
hbn_vnode_getframe(handle, channel, 1000, &out_img);-
hbn_isp_get_exposure_attr(isp_node_handle, &exp_attr);
想要查看图像每帧的曝光时间参数等信息,找不到上述函数的相关源码。
你好,hbn接口这部分为芯片驱动代码,社区目前也没有这部分的代码。目前社区手册的接口为sp*接口
找不到 vio/hb_mipi_api.h
我来帮你排查这个问题。先搜索一下社区最新的摄像头开发相关资源。
hobot_mipi_cam 和 hbn_* 系列接口属于芯片底层驱动代码,社区不提供源码。 目前官方推荐的开发方式是使用 sp_* 系列接口(如 sp_open_camera, sp_vio_get_frame 等)。
关于您提到的两个问题:
hbn_isp_get_exposure_attr)是底层驱动接口,社区没有源码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(包含曝光等信息)
// 具体接口需要查看最新文档
访问 RDK X5 多媒体开发文档,查看 sp_* 接口的详细说明。
推荐查看以下帖子获取 SP 接口使用示例:
如果需要获取曝光参数,可以尝试:
# 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
如果确实需要底层曝光控制,建议:
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
建议您转向使用 sp_* 接口进行开发,这是社区支持的标准方式。如果有具体的曝光参数需求,可以在论坛新开帖子说明您的应用场景,可能会有更针对性的解决方案。
mipi摄像头视场角问题,画面有被裁剪,且不清晰
针对您补充的 “MIPI摄像头视场角问题,画面有被裁剪,且不清晰”,这是RDK开发中非常典型的两个问题。结合社区历史案例,直接给出结论和解决方案:
大多数MIPI摄像头(如IMX219、SC230AI等)物理分辨率很高(如3280×2464),但RDK默认配置为了性能(30fps/1080p),往往只配置了 1920×1080 的输出。
width/height 参数决定了Sensor输出窗口的大小。如果设置小于Sensor最大分辨率,Sensor会自动Crop中心区域输出。如果需要满视场角,必须修改源码重新编译驱动库。
hobot-spdev 仓库中的传感器配置文件(如 sensor_imx219_config.c)。.width 和 .height 修改为传感器的最大分辨率(例如IMX219改为3280×2464)。// 示例:IMX219 最大分辨率配置
.width = 3280,
.height = 2464,
.fps = 21, // 注意:分辨率提高后,帧率通常会下降
libimx217.so 或对应的sensor库。.so 文件替换到开发板的 /usr/lib/ 或相应目录,重启服务。如果无法修改底层驱动,只能在应用层接受当前视场角。
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
sp_* 接口调整ISP参数(需参考具体API文档)。# 关键:根据实际数据大小判断分辨率和对齐
stride = (width + 63) // 64 * 64 # 常见64字节对齐
确认需求:
获取当前配置:
查看板端传感器配置文件路径(通常在 /etc/camera/ 或驱动源码中),确认当前 width/height 设置。
参考社区资源:
如果无法编译:
为了给出更精确的命令,请补充:
cat /etc/version)?