整理工程代码的时候发现有一段代码(因为按照调用关系写流程图,这一段没有被写上):

//---------------------------------------------------------------------------------
/**
\brief   回调函数
\param   pFrame         回调参数\return  无
*/
//----------------------------------------------------------------------------------
void __stdcall CFIRADlg::OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM* pFrame)
{CFIRADlg* pDlg = (CFIRADlg*)(pFrame->pUserParam);if (pFrame->status == 0){memcpy(pDlg->m_pBufferRaw, pFrame->pImgBuf, pFrame->nImgSize);// RGB转换DxRaw8toRGB24(pDlg->m_pBufferRaw, pDlg->m_pBufferRGB, (VxUint32)(pDlg->m_nImageWidth), (VxUint32)(pDlg->m_nImageHeight), RAW2RGB_NEIGHBOUR, DX_PIXEL_COLOR_FILTER(pDlg->m_nPixelColorFilter), TRUE);// 图像质量提升if (pDlg->m_bIsImproveImg){//提升图像质量DxImageImprovment(pDlg->m_pBufferRGB, pDlg->m_pBufferRGB, (VxUint32)(pDlg->m_nImageWidth), (VxUint32)(pDlg->m_nImageHeight), pDlg->m_nColorCorrection, pDlg->m_pContrastLut, pDlg->m_pGammaLut);}// 显示图像pDlg->DrawImg();// 图像保存if (pDlg->m_bIsSaveImg){pDlg->SaveImage();}}
}

转到OnFrameCallbackFun定义:

/// 回调函数static void __stdcall OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM* pFrame);

再查找所有引用只有两处:声明和定义函数体

查找回调函数的相关资料,有关理解参考另一篇:理解回调函数

再转到参数的引用,有四处

跳到最后一个引用

在这里插入代码片//----------------------------------------------------------------------------------
/**
\brief     采集回调函数定义
\param     pFrameData    帧数据信息结构体
\return    void
*/
//----------------------------------------------------------------------------------
typedef void (GX_STDC* GXCaptureCallBack) (GX_FRAME_CALLBACK_PARAM *pFrameData);

再转到GXCaptureCallBack函数的定义

//----------------------------------------------------------------------------------
/**
\brief      注册采集回调函数
\attention  必须在发送开采命令之前注册采集回调函数
\param [in]hDevice     设备句柄
\param [in]pUserParam  用户私有数据
\param [in]callBackFun 用户注册的回调函数
\return    GX_STATUS_SUCCESS             操作成功,没有发生错误GX_STATUS_NOT_INIT_API        没有调用GXInitLib初始化库GX_STATUS_INVALID_HANDLE      用户传入非法的句柄GX_STATUS_INVALID_PARAMETER   用户传入指针为NULLGX_STATUS_INVALID_CALL        发送开采命令后,不能注册采集回调函数其它错误情况请参见GX_STATUS_LIST
*/
//----------------------------------------------------------------------------------
GX_API GXRegisterCaptureCallback  (GX_DEV_HANDLE hDevice, void *pUserParam, GXCaptureCallBack callBackFun);

说明上面OnFrameCallbackFun函数是采集函数的回调函数
采集函数如下:

//----------------------------------------------------------------------------------
/**
\brief      直接获取一帧图像
\attention  如果用户已注册采集回调函数,调用此接口会报错GX_STATUS_INVALID_CALL
\param [in]hDevice        设备句柄
\param [in,out]pFrameData 图像信息结构体指针
\param [in]nTimeout       超时时间
\return    GX_STATUS_SUCCESS             操作成功,没有发生错误GX_STATUS_NOT_INIT_API        没有调用GXInitLib初始化库GX_STATUS_INVALID_HANDLE      用户传入非法的句柄GX_STATUS_INVALID_CALL        发送停采命令之前,不能注销采集回调函数GX_STATUS_INVALID_PARAMETER   用户传入图像地址指针为NULLGX_STATUS_NEED_MORE_BUFFER    用户分配的图像buffer小于实际需要的大小其它错误情况请参见GX_STATUS_LIST
*/
//----------------------------------------------------------------------------------
GX_API GXGetImage(GX_DEV_HANDLE hDevice, GX_FRAME_DATA *pFrameData, uint32_t nTimeout);

这里的意思也就是当GXGetImage在采集线程中被调用之后,OnFrameCallbackFun也就自动被系统调用,而OnFrameCallbackFun函数是我们自己写的回调函数。

基于MFC相机采集的实现与采集回调函数的应用实例相关推荐

  1. 回调函数方法连续采集和发送软触发采集

    相机两种连续采集方式 第一种:回调机制 第一步,注册回调函数(头文件需要声明好) // 注册采集回调函数emStatus = GXRegisterCaptureCallback(m_hDevice, ...

  2. 基于MFC的Basler相机采集程序

    基于MFC的Basler相机采集程序 编程软件VS2015 相机Basler acA4024-8gc 本文采用了opencv3.4.10,并且采用了opencv1.0版本时代的CvvImage类,其对 ...

  3. 基于Android的rgb七彩环颜色采集器

    代码地址如下: http://www.demodashi.com/demo/11892.html 一.前言. 在大学期间,看到这个rgb灯,蛮好奇的,这么漂亮的颜色采集,并且可以同步到设备rbg灯颜色 ...

  4. STM32基于软件模拟IIC进行AHT21B温湿度采集

    STM32基于软件模拟IIC进行AHT21B温湿度采集 一. IIC简介 1.1 IIC简介 1.2 实现方式 1.3 实现方式对比 二. AHT21B简介 2.1 简介 2.2 产品特点 2.3 外 ...

  5. ubuntu下安装大恒相机驱动并调用程序采集图像

    一.ubuntu下安装大恒相机驱动 1.大恒GigE摄像头Ubuntu环境下的配置 大恒GigE摄像头Ubuntu环境下的配置 - Tzbubble - 博客园 2.官方的Linux版SDK常见问题解 ...

  6. Vitis项目:基于 ZYNQ 的 IMX2221 摄像头实时视频流采集传输 (一)传感器配置

    项目:基于 ZYNQ 的 IMX2221 摄像头实时视频流采集传输 章节:传感器配置(一) 本章目的:使用 ZYNQ 芯片的 PS 端的 SPI 接口对 CMOS 图像传感器进行设置操作,保证 CMO ...

  7. 基于MFC的Basler工业相机SDK开发

    一.软.硬件准备 VS2017 opencv3.4.6 相机:Basler acA2500-14gm 驱动:pylon 二.软硬件配置 下载安装pylon,到basler官方网站下载适合自己相机的py ...

  8. 深度相机 物体三维重建_基于深度相机的实时物体三维重建方法与流程

    本发明涉及三维成像领域,特别是一种能够实时地对物体或人体进行三维重建的方法. 背景技术: 三维重建技术一直是计算机图形学和计算机视觉领域的热点课题.三维重建就是从输入数据中建立3D模型.随着各种面向普 ...

  9. 基于RGB-D相机的三维重建总览:静态与动态三维重建

    " 近年来,随着AR,VR,虚拟试衣,自动驾驶等领域的兴起,三维重建技术得到了广泛的应用.今天分享一篇来自三维匠心的关于三维重建的综述文章.文章较长,建议收藏. " 三维匠心(已授 ...

最新文章

  1. idea装python插件_学习idea2020手动安装python插件的实现方法
  2. MySQL5.7.19版本压缩包安装方式的一些坑
  3. windows下使用pthread库
  4. NiFi导出自己模板和导入别人模板
  5. https的博客作业
  6. 花书+吴恩达深度学习(十五)序列模型之循环神经网络 RNN
  7. android开发(4) 闪屏的实现
  8. (day 48 - 双端队列的使用 ) 剑指 Offer 59 - II. 队列的最大值
  9. python语言适用于哪些领域_Python用于哪些领域
  10. 二分图最大权匹配:Kuhn-Munkres算法
  11. python产生随机数组_Python生成随机数组的方法小结
  12. mysql数据库字符集实践详解_mysql数据库 详解 之 自学成才1
  13. OutputFormat数据输出
  14. Centos Denyhosts 一键安装配置脚本
  15. APP、网站等注册、登录、改密等发送验证码短信的接入流程---创蓝253云通讯
  16. md5解密算法 java_MD5算法解密java
  17. 小程序获取oppenid时返回40125或者40029
  18. 市面上主流的音视频竞品分析对比
  19. 7种Dos攻击和防范方法
  20. GitCracken

热门文章

  1. 【树莓派】【转载】基于树莓派,制作家庭媒体中心+下载机
  2. Eclipse 设置
  3. C语言之结构体以及结构体对齐访问
  4. cisco 交换机镜像
  5. IPad开发之有帮助的开发工具
  6. Unlocker 解锁 VMware Workstation
  7. Calc3: Geometrics
  8. 第7章 jQuery中的事件与动画
  9. SpringMVC:学习笔记(11)——依赖注入与@Autowired
  10. keepalived高可用集群。