任莊瑜

任莊瑜

0个粉丝

1

问答

0

专栏

0

资料

任莊瑜  发布于  2025-02-13 17:10:05
采纳率 0%
1个问答
323

海思如何修改摄像头曝光时间?(hi3516DV300)

每个主程序运行周期修改并打印曝光参数:

        ISP_EXPOSURE_ATTR_S pstExpAttr;
        ISP_DRC_ATTR_S pstDRC;
        ISP_EXP_INFO_S stExpInfo;

        HI_MPI_ISP_GetExposureAttr(0,&pstExpAttr);
        pstExpAttr.bByPass = HI_FALSE;
        pstExpAttr.enOpType = OP_TYPE_AUTO;
        // pstExpAttr.stAuto.u8Tolerance=100;
        pstExpAttr.stAuto.stAGainRange.u32Max=0x7FFFFFFF;
        pstExpAttr.stAuto.stAGainRange.u32Min=0x400;
        pstExpAttr.stAuto.stDGainRange.u32Max=0x7FFFFFFF;
        pstExpAttr.stAuto.stDGainRange.u32Min=0x400;
        pstExpAttr.stAuto.stISPDGainRange.u32Max=0x7FFFFFFF;
        pstExpAttr.stAuto.stISPDGainRange.u32Max=0x400;
        pstExpAttr.stAuto.u16EVBias=0x90;
        pstExpAttr.stAuto.stExpTimeRange.u32Min=300;
        pstExpAttr.stAuto.stExpTimeRange.u32Max=400000;
        pstExpAttr.stAuto.u8Speed = 0x80; 
        HI_MPI_ISP_SetExposureAttr(0, &pstExpAttr);

        HI_MPI_ISP_GetDRCAttr(0, &pstDRC);
        pstDRC.bEnable=HI_TRUE;
        HI_MPI_ISP_SetDRCAttr(0, &pstDRC);

        HI_MPI_ISP_QueryExposureInfo(0,&stExpInfo);
        printf("Sensor exposure time: %dus\n",stExpInfo.u32ExpTime);
        printf("Analog Gain: %d\n",stExpInfo.u32AGain);
        printf("Digital Gain: %d\n",stExpInfo.u32DGain);
        printf("ISP Gain: %d\n",stExpInfo.u32ISPDGain);
        printf("Exposure: %d\n",stExpInfo.u32Exposure);
        printf("Average Luminance: %d\n",stExpInfo.u8AveLum);
        printf("Hist error: %d\n",stExpInfo.s16HistError);
        stExpInfo.bExposureIsMAX ? printf("Exposure is MAX!\n") : 
        printf("Exposure is NOT MAX!\n");

输出结果:
Sensor exposure time: 2730us
Analog Gain: 9667
Digital Gain: 1024
ISP Gain: 1088
Exposure: 483350
Average Luminance: 0
Hist error: 40
Exposure is MAX!
似乎没办法修改摄像头曝光参数,是AE没生效,还是AE会自动调整为默认值?
请问是逻辑问题,还是设置参数的时机不对,是要在初始化vi之后设置或绑定vpss到VDEC后,还是在已经获取视频流数据的时候调用get-set也可以修改?小白疑惑,希望大佬指点(抱拳)谢谢!
包括使用手动模式也是一样的输出,修改不到曝光时间:

        pstExpAttr.enOpType = OP_TYPE_MANUAL; 
        pstExpAttr.stManual.enAGainOpType = OP_TYPE_MANUAL;
        pstExpAttr.stManual.enDGainOpType = OP_TYPE_MANUAL;
        pstExpAttr.stManual.enISPDGainOpType = OP_TYPE_MANUAL;
我来回答
回答7个
时间排序
认可量排序

任莊瑜

0个粉丝

1

问答

0

专栏

0

资料

任莊瑜 2025-02-13 17:28:53
认可0

vi初始化时查询是以下输出,稳定运行后是上面的值
Sensor exposure time: 874us Analog Gain: 1024 Digital Gain: 1024 ISP Gain: 1084 Exposure: 17283 Average Luminance: 0 Hist error: 0 Exposure is MAX! u32ExpTime2: 874us

邓晓

22个粉丝

1

问答

0

专栏

19

资料

邓晓 2025-02-14 16:20:51
认可0

AE如果是自动模式,AE状态是3A算法自动调整出来的,稳定后不变,数值在设置的范围内
AE如果是手动模式,AE状态应该就是配置的手动结构体值,不会更改

任莊瑜
任莊瑜   回复   邓晓  2025-02-14 17:21:09
0

我使用自动模式时,AE数值并不会在设置的范围内,查询总为Sensor exposure time: 2730us,哪怕设置的最大值小于2730或者最小值大于2730.通过固定下面参数:

pstExpAttr.stAuto.stAGainRange

同样,设置了手动模式参数,AE查询信息也为Sensor exposure time: 2730us,即如问题中所示
修改设置手动和自动参数,稳定运行后调用查询接口,AE参数均一样都为c Sensor exposure time: 2730us Analog Gain: 9667 Digital Gain: 1024 ISP Gain: 1088 Exposure: 483350 Average Luminance: 0 Hist error: 40 Exposure is MAX!
所以我很疑惑,似乎以如题方式调用该接口,并不会影响到AE状态。不确定是不是get-set时机不对,还是AE自动曝光完全没生效

洪欣
洪欣   回复   邓晓  2025-02-15 10:49:14
0

大佬,根据手册《ISP FAQ》上的QA,设置AE模式,自动增益,将曝光时间上、下限设置为相同值就能实现手动曝光

但现在问题是,我通过hi_mpi_isp_get_exposure_attr查询到的AE模式曝光时间阈值范围为[115, 944036],
但实际上当我设置的曝光时间超过33189us(即1帧时间),
在睡眠一帧时间确保设置生效后,hi_mpi_isp_query_exposure_info获得的实际曝光时间依然为33189us

我的疑问:
1、因为get_exposure_attr查询得到的曝光时间阈值范围并不是sensor允许的实际曝光时间范围,导致超出33189的时间设置失效
2、睡眠时间不够导致设置失败,但我把睡眠时间增加到设置曝光时间,该设置依然无效
3、AE模式设置失败后,我转向了ME模式,exp_time_op_type设置为HI_OP_MODE_MANUAL,manual_attr.exp_time设置为我的时间,结果所有拿到的实际曝光时间都是33189us,是我设置的不对吗

麻烦您解答一下,谢谢!

邓晓
邓晓   回复   洪欣  2025-02-17 09:15:53
0

估计是帧率钳制了最大曝光时间,如果30fps,每帧时间肯定在30ms内,如果曝光时间要大于30ms,可能要降低sensor帧率,你看下sensor驱动,好像是有帧率适配的

洪欣
洪欣   回复   邓晓  2025-02-17 14:08:00
0

我是这样设置的,ae_mode设置为SLOW_SHUTTER自动降帧模式,将取图深度调整为1就可以了,虽然不是很明白其中的原理

MA_NONG

9个粉丝

13

问答

2

专栏

0

资料

MA_NONG 2025-02-14 17:29:50
认可0

直接用 pqtool 工具连接板子,AE参数那一栏,任意更改就知道了。都能生效的。

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区