MFC显示图像到界面,可以用链接中的DrawMatToPic,有时会出现IplImage*类型转换问题,因为用opencv做后续图像处理,所以统一使用Mat类型,可以showMat()函数进行显示。在MFC中嵌入opencv窗口”view”后,其他地方调用imshow(”view“,图像名)。

int Ctest2Dlg::ShowMat(cv::Mat img, HWND hWndDisplay)
{
    if (img.channels()<3)`
    {
        return -1;
    }

//构造将要显示的Mat版本图片
    RECT rect;
    ::GetClientRect(hWndDisplay, &rect);
    cv::Mat imgShow(abs(rect.top - rect.bottom), abs(rect.right - rect.left), CV_8UC3);
    resize(img, imgShow, imgShow.size());

//在控件上显示要用到的CImage类图片
    ATL::CImage CI;
    int w = imgShow.cols;//宽  
    int h = imgShow.rows;//高  
    int channels = imgShow.channels();//通道数  
    CI.Create(w, h, 8 * channels);

//CI像素的复制
    uchar *pS;
    uchar *pImg = (uchar *)CI.GetBits();//得到CImage数据区地址  
    int step = CI.GetPitch();
    for (int i = 0; i<h; i++)
    {
        pS = imgShow.ptr<uchar>(i);
        for (int j = 0; j<w; j++)
        {
            for (int k = 0; k<3; k++)
                *(pImg + i*step + j * 3 + k) = pS[j * 3 + k];
            //注意到这里的step不用乘以3  
        }
    }

// TODO: 在此添加额外的初始化代码
    //在控件显示图片
    HDC dc;
    dc = ::GetDC(hWndDisplay);
    CI.Draw(dc, 0, 0);
    ::ReleaseDC(hWndDisplay, dc);
    CI.Destroy();
    return 0;
}
---------------------

原文:https://blog.csdn.net/qq_36509928/article/details/82141970

MFC+OPENCV+显示MAT类型图像相关推荐

  1. MFC+opencv 显示mat图像

    VS2015+opencv3.0 MFC显示图片中方法三在使用时, 只能显示彩色图像,灰度图像显示有问题,经查找,是没有设置图像调色板的原因 图片控件宽度不为4的倍数 显示错误, 修改 代码 /*** ...

  2. VS+MFC+Opencv显示视频和图像。

    读入图片: void CDrawImgVideoDlg::OnBnClickedShowImg() {     // TODO: 在此添加控件通知处理程序代码     CDC *pDC = GetDl ...

  3. OpenCV的Mat类型以及基本函数使用

    OpenCV的Mat类型以及基本函数使用 Mat和IplImage的区别 Mat和IplImage的主要区别 在OpenCV中IplImage是表示一个图像的结构体,也是从OpenCV1.0到目前最为 ...

  4. C++下的OpenCV中Mat类型存储的图像格式

    在调用CV进行图像处理时,经常涉及图像格式转换,经常出现原始图像输入后CV_32F与ushort之间的数据差异导致程序报错,可使用std::cout << "dilated_ty ...

  5. 关于怎么怎么把 unsingned char 数据转换为 Opencv 的Mat类型,并且吧图像显示出来

    1.定义 unsignde char* A; 2.定义cv::Mat B(cv::Size(800,500),CV_8U) 3.使用c语言的 memcpy(B.data, A,800*500)//将A ...

  6. C++Opencv中Mat类型创建与读取某点像素值

    1.创建Mat,包含数据类型: Mat img: img.create(Size,type); 其中 type类包含: CV_8UC1.CV_8UC3.CV_32S.CV_32F等,16.64位用的少 ...

  7. 【OpenCV】IplImage类型图像ROI矩形区域的快速获取

    一直使用的是OpenCV C++的接口,但是有些只能用纯c的环境下,就不得不用c接口了,IplImage是c接口图像数据最基本的数据结构,获取其ROI区域的过程如下,首先通过cvSetImageROI ...

  8. mfc怎么显示jpg png图像

    如果是VS2005以上版本可以直接使用MFC自带的CImage类,如果不是可以用网上比较流行的CxImage,或者使用GDI+ 转载于:https://www.cnblogs.com/huhu0013 ...

  9. opencv的mat赋值_OpenCV Mat 类型定义和赋值

    1.一般的Mat定义方法:cv::Mat M(height,width,),例: cv::Mat M(480,640,CV_8UC3); 表示定义了一个480行640列的矩阵,矩阵的每个单元的由三个( ...

最新文章

  1. c++学习笔记内联函数,函数重载,默认参数
  2. 如何在Keras中训练大型数据集
  3. RabbitMQ入门-发送消息机制的介绍
  4. Avalonia跨平台入门第八篇之控件的拖放
  5. Fast Matrix Factorization for Online Recommendation with Implicit Feedback论文代码分析
  6. 资源图与死锁定理的灵活运用
  7. Linux实训项目——第八章:配置网络接口及远程管理
  8. 如何提升你的面试机会?
  9. magedu第一天学习(计算机基础部分)
  10. kali2019安装netspeed教程
  11. 联盟链Quorum(基于raft共识)部署流程(三)- 部署基于Quorum链的区块链浏览器
  12. [转载]无线网络优化
  13. 数学建模之灰色关联分析
  14. 加薪引发的难题 穆穆-movno1
  15. 3 移动机器人路径规划(1- 栅格地图绘制)
  16. 手机app抓包,无视SSLPinning
  17. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...
  18. “创意云”大规模在线创作服务平台
  19. 质量与服务兼顾 大型网吧组网方案推荐(转)
  20. 使用Metasploit框架测试ms08-067模块

热门文章

  1. mysql500万数据查询速度_是什么影响了数据库查询速度
  2. python学习-文件的读写操作
  3. linux内存分析命令,Linux進程內存分析pmap命令
  4. iis php报错无法屏蔽,php屏蔽错误消息
  5. 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
  6. oracle 加全文索引,oracle全文索引的创建和使用
  7. sqlsever无法重新启动计算机,有关SqlServer 2008安装及卸载的一些问题,安装检测时显示重新启动计算机....
  8. 网速上不去,这锅真是路由器的?
  9. 我是这样用extern的...
  10. android滚动条布局横向,Android自定义ViewGroup实现可滚动的横向布局(2)