全志---获取摄像头数据

发布于:2025-02-10 ⋅ 阅读:(28) ⋅ 点赞:(0)

本章节主要展示如何使用VI组件采集摄像头图像输出并生成YUV文件保存至开发板端。

1.加载参数

loadConfigPara(pContext, pConfigFilePath)

2.初始化摄像头

pCap->Dev = MM_INVALID_DEV;
pCap->mIspDev = MM_INVALID_DEV;
pCap->Chn = MM_INVALID_CHN;

3.启动MPP平台

MPP_SYS_CONF_S stConf;
memset(&stConf, 0, sizeof(MPP_SYS_CONF_S));
AW_MPI_SYS_SetConf(&stConf);
AW_MPI_SYS_Init();

4.初始化缓冲区管理器

pContext->mpSaveBufMgr = initSaveBufMgr(pContext);

5.创建保存图像线程

pthread_create(&saveFrmTrd, NULL, SaveCsiFrameThrad, (void *)pContext);

6.配置VI组件参数并启动

memset(&stVIAttr, 0, sizeof(VI_ATTR_S));
configViAttr(&stVIAttr, &pCap->mConfig);
pCap->Dev = pConfig->DevNum;
eRet = AW_MPI_VI_CreateVipp(pCap->Dev);
AW_MPI_VI_SetVippAttr(pCap->Dev, &stVIAttr);
AW_MPI_ISP_Run(pCap->mIspDev);
AW_MPI_VI_EnableVipp(pCap->Dev);
AW_MPI_VI_CreateVirChn(pCap->Dev, pCap->Chn, NULL);

7.启动虚通道并录制视频

AW_MPI_VI_EnableVirChn(pCap->Dev, pCap->Chn);
pthread_create(&pCap->thid, NULL, GetCSIFrameThread, (void *)pCap);

8.关闭VI组件

AW_MPI_VI_DisableVirChn(pCap->Dev, pCap->Chn);
AW_MPI_VI_DestroyVirChn(pCap->Dev, pCap->Chn);
AW_MPI_VI_DisableVipp(pCap->Dev);
if (pCap->mIspDev >= 0)
    AW_MPI_ISP_Stop(pCap->mIspDev);
AW_MPI_VI_DestroyVipp(pCap->Dev);

9.退出MPP平台

AW_MPI_SYS_Exit();

网站公告

今日签到

点亮在社区的每一天
去签到