RISC-V技术论坛
直播中

jf_1137202360

9年用户 1528经验值
擅长:嵌入式技术
私信 关注
[经验]

【Milk-V Duo S 开发板免费体验】ISP功能AE测试

官方提供ISP相关的接口,可以方便的使用,具体的接口参考头文件
cvi_isp.h
运行/mnt/system/usr/bin/sample_sensor_test
对应代码位于
https://github.com/milkv-duo/duo-buildroot-sdk/blob/develop/middleware/v2/sample/sensor_test/sensor_test.c
选择5
图片1.png
此时执行
s32Ret = sensor_ae_test();
打印如下
图片2.png
对应代码
CVI_S32 sensor_ae_test(void)
{
CVI_S32 sID = 0, item = 0, para1 = 0, para2 = 0, para3 = 0;
CVI_S32 s32Ret = CVI_SUCCESS;
sensor_ae_test_init();
SAMPLE_PRT("\n1:AE_SetManualExposureTest(sID, 0:bypss 1:auto 2:manu, time, iso)\n");
SAMPLE_PRT("2:AE_SetDebugMode(sID, item)\n");
SAMPLE_PRT("3:AE_SetManualGainTest(sID, AG, DG, IG)\n");
SAMPLE_PRT("4:AE_SetFpsTest(sID, fps)\n");
SAMPLE_PRT("5:AE_SetLSC(sID, enable)\n");
SAMPLE_PRT("6:AE_SetWDRManualRatio(sid, ratio), ratio: 4 - 256, 0: set SE max shutter time.\n");
SAMPLE_PRT("7:AE_GainLinearTest(sID, time, startISO, endISO)\n");
SAMPLE_PRT("8:AE_ShutterLinearTest(sID, fid 0: LE 1: SE, startExpTime, endExpTime)\n");
SAMPLE_PRT("9:AE_GainTableLinearTest(sID, type: again 0 dgain 1, startIndex, endIndex)\n");
SAMPLE_PRT("10:AE_SetBlc(sID, type: 0:disable 1:auto, 2:manu)\n");
SAMPLE_PRT("11:AE_WorkFrameCheck(sID, time, ISO 1, ISO 2)\n");
SAMPLE_PRT("Item/sID/para1/para2/para3\n\n");
scanf("%d %d %d %d %d", &item, &sID, ¶1, ¶2, ¶3);
if (sID >= MAX_SENSOR_NUM) {
  error_log("sID out of range...\n");
  s32Ret = CVI_FAILURE;
  return s32Ret;
}
switch (item) {
case 1:
  AE_SetManualExposureTest(sID, para1, para2, para3);
  break;
case 2:
  AE_SetDebugMode(sID, para1);
  break;
case 3:
  AE_SetManualGainTest(sID, para1, para2, para3);
  break;
case 4:
  AE_SetFpsTest(sID, para1);
  break;
case 5:
  AE_SetLSC(sID, para1);
  break;
case 6:
  AE_SetWDRManualRatio(sID, para1);
  break;
case 7:
  AE_GainLinearTest(sID, para1, para2, para3);
  break;
case 8:
  AE_ShutterLinearTest(sID, para1, para2, para3);
  break;
case 9:
  AE_GainTableLinearTest(sID, para1, para2, para3);
  break;
case 10:
  AE_SetBlc(sID, para1);
  break;
case 11:
  AE_WorkFrameCheck(sID, para1, para2, para3);
default:
  break;
}
return s32Ret;
}
输入
scanf("%d %d %d %d %d", &item, &sID, ¶1, ¶2, ¶3);
即输入序号后面带sensor id 然后加3个参数
比如
输入10 0 1 0 0执行
static void AE_SetBlc(CVI_U8 sID, CVI_U8 type)
{
int r = 0, gr = 0, gb = 0, b = 0;
ISP_BLACK_LEVEL_ATTR_S stBlackLevelAttr;
memset(&stBlackLevelAttr, 0, sizeof(ISP_BLACK_LEVEL_ATTR_S));
CVI_ISP_GetBlackLevelAttr(sID, &stBlackLevelAttr);
switch (type) {
case 0:
  stBlackLevelAttr.Enable = CVI_FALSE;
  break;
case 1:
  stBlackLevelAttr.Enable = CVI_TRUE;
  stBlackLevelAttr.enOpType = OP_TYPE_AUTO;
  break;
case 2:
  stBlackLevelAttr.Enable = CVI_TRUE;
  stBlackLevelAttr.enOpType = OP_TYPE_MANUAL;
  SAMPLE_PRT("Please input offsetR,offsetGr,offsetGb,offsetB\n");
  scanf("%d %d %d %d", &r, &gr, &gb, &b);
  stBlackLevelAttr.stManual.OffsetR = (CVI_U16) r;
  stBlackLevelAttr.stManual.OffsetGr = (CVI_U16) gr;
  stBlackLevelAttr.stManual.OffsetGb = (CVI_U16) gb;
  stBlackLevelAttr.stManual.OffsetB = (CVI_U16) b;
  break;
default:
  break;
}
SAMPLE_PRT("blc info, enable: %d, enOpType: %d, manual offsetR,Gr,Gb,B: %d, %d, %d, %d\n",
  stBlackLevelAttr.Enable,
  stBlackLevelAttr.enOpType,
  stBlackLevelAttr.stManual.OffsetR,
  stBlackLevelAttr.stManual.OffsetGr,
  stBlackLevelAttr.stManual.OffsetGb,
  stBlackLevelAttr.stManual.OffsetB);
CVI_ISP_SetBlackLevelAttr(sID, &stBlackLevelAttr);
}
图片3.png
此时输入2 dump yuv
图片4.png
输入sensor id 0然后输入dumo的帧数10
图片5.png
图片6.png
255推出,看到抓取的文件sample_0.yuv
图片7.png
导出到电脑用 7yuv查看
图片8.png
图片9.png

更多回帖

发帖
×
20
完善资料,
赚取积分