博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在MFC的picture控件中如何显示Mat图
阅读量:4303 次
发布时间:2019-05-27

本文共 1367 字,大约阅读时间需要 4 分钟。

  1.  
  2. 首先,要进行输入检查,看Mat数据是否是有效的,如下图中所示

  3. 定义位图数据结构,用以方便在图形设备接口(GraphicsDeviceInterface)上显示,也就是windows上的GDI

  4. 开发内存空间,并初始化,按下图中所示那样即可

  5. 定义位图相关信息,并和输入数据Mat图联系起来

  6. 在获取控件的客户区,并设置图像的显示模式,SetStretchBltMode是Windows GDI函数,功能为该函数可以设置指定设备环境中的位图拉伸模式。COLORONCOLOR:删除像素。该模式删除所有消除的像素行,不保留其信息。

  7. 完成上述后,将内存中的图像数据拷贝到屏幕上,执行如下图中所示

  8. 上面写了显示的关键步骤,下面贴上详细源码,以方便大家理解:

    void showMatImgToWnd(CWnd* pWnd, const cv::Mat& img)

        if(img.empty()) 

            return; 

     static BITMAPINFO *bitMapinfo = NULL;

     static bool First=TRUE;

     if(First)

     {  

      BYTE *bitBuffer = new BYTE[40+4*256];//开辟一个内存区域

      if(bitBuffer == NULL)

      { 

       return;

      }

      First=FALSE;

      memset(bitBuffer, 0, 40+4*256);

      bitMapinfo = (BITMAPINFO *)bitBuffer;

      bitMapinfo->bmiHeader.biSize   = sizeof(BITMAPINFOHEADER);

      bitMapinfo->bmiHeader.biPlanes   = 1;   

      for(int i=0; i<256; i++)

      { //颜色的取值范围 (0-255)

       bitMapinfo->bmiColors[i].rgbBlue  =bitMapinfo->bmiColors[i].rgbGreen =bitMapinfo->bmiColors[i].rgbRed   =(BYTE) i;

      } 

      }

      bitMapinfo->bmiHeader.biHeight = -img.rows;   

           bitMapinfo->bmiHeader.biWidth = img.cols;

     bitMapinfo->bmiHeader.biBitCount= img.channels() *8;    

     

     CRect drect;       

     pWnd->GetClientRect(drect);    //pWnd指向CWnd类的一个指针 

     CClientDC dc(pWnd);

     HDC hDC =dc.GetSafeHdc();                  //HDC是Windows的一种数据类型,是设备描述句柄;

     SetStretchBltMode(hDC, COLORONCOLOR);    

                                              StretchDIBits(hDC,

         0,

         0,

         drect.right,  //显示窗口宽度

         drect.bottom,  //显示窗口高度

         0,

         0,

         img.cols,     //图像宽度

         img.rows,     //图像高度

         img.data,   

         bitMapinfo,   

         DIB_RGB_COLORS, 

         SRCCOPY

          );

    }

     

     

转载地址:http://bpmws.baihongyu.com/

你可能感兴趣的文章
资金流入流出计算方法
查看>>
海龟交易法则07_如何衡量风险
查看>>
海龟交易法则08_风险与资金管理
查看>>
海龟交易法则09_海龟式积木
查看>>
海龟交易法则10_通用积木
查看>>
海龟交易法则14_掌控心魔
查看>>
海龟交易法则15_万事俱备
查看>>
海龟交易法则16_附原版海龟交易法则
查看>>
克罗谈投资策略01_期货交易中的墨菲法则
查看>>
克罗谈投资策略02_赢家和输家
查看>>
克罗谈投资策略03_你所期望的赌博方式
查看>>
克罗谈投资策略04_感觉与现实
查看>>
通向财务自由之路01_导读
查看>>
通向财务自由之路02_成功的决定因素:你
查看>>
中低频量化交易策略研发01_引言
查看>>
中低频量化交易策略研发06_推进的择时策略
查看>>
史丹·温斯坦称傲牛熊市的秘密
查看>>
期货市场技术分析01_理论基础
查看>>
期货市场技术分析02_趋势的基本概念
查看>>
期货市场技术分析03_主要反转形态
查看>>