OpenCV+MFC快速应用:如何在MFC中显示Mat图像
来源:互联网 发布:软件提速精灵 编辑:程序博客网 时间:2024/06/06 02:15
在OpenCV的较早版本中使用IplImage以及CvvImage类(1.0版本),新版本中凸显C++语法(当然也保留了对于旧版本的支持,如经典的C语法)
使用MFC可以进行快速开发,而OpenCV则提供了强大的数据处理算法支持,二者强强联合,使得开发过程更加高效。
关于如何显示IplImage,请参见这两篇文章:
在MFC的View窗口中显示IplImage之一
在MFC的View窗口中显示IplImage之二
现在,OpenCV新版本更多地使用Mat而不是IplImage(你也可以进行Mat<-->IplImage的转换,但不建议这样做)
于是对应的,在MFC的View窗口中显示Mat方法产生了
void DrawToHDC(Mat mat, HDC hDC, RECT rect){CImage img; //ATL::CImageint w = mat.cols; //宽int h = mat.rows; //高int chinnels = mat.channels();img.Create(w, h, chinnels << 3);RGBQUAD* pColorTable = NULL;int nMaxColors = 256;pColorTable = new RGBQUAD[nMaxColors];img.GetColorTable(0, nMaxColors, pColorTable);for (int i = 0; i < nMaxColors; i++){pColorTable->rgbBlue = (BYTE)i;pColorTable->rgbGreen = (BYTE)i;pColorTable->rgbRed = (BYTE)i;}img.SetColorTable(0, nMaxColors, pColorTable);delete[] pColorTable;int i, j, k;BYTE *pSource = NULL;BYTE *pImgData = (BYTE *)img.GetBits();int step = img.GetPitch();if (chinnels == 1){for (i = 0; i < h; ++i){pSource = mat.ptr<BYTE>(i);for (j = 0; j < w; ++j){*(pImgData + i*step + j) = pSource[j];}}}else if (chinnels == 3){for (i = 0; i < h; ++i){pSource = mat.ptr<BYTE>(i);for (j = 0; j < w; ++j){for (k = 0; k < 3; ++k){*(pImgData + i*step + j * 3 + k) = pSource[j * 3 + k];}}}}else{AfxMessageBox(TEXT("仅支持灰度图/3通道彩色图"));return;}SetStretchBltMode(hDC, COLORONCOLOR);img.StretchBlt(hDC, rect, SRCCOPY);img.Destroy();}
使用示例
// OnPaint/OnDrawCClientDC dc(this);Mat mat = imread(strFileName, CV_LOAD_IMAGE_UNCHANGED);RECT rect;GetClientRect(&rect);DrawToHDC(mat, dc.m_hDC, rect);//部分代码已省略
点此领取楼主
0 0
- OpenCV+MFC快速应用:如何在MFC中显示Mat图像
- 在MFC中如何显示OpenCV的图像Mat
- OPENCV Mat图像在MFC PictureControl显示
- MFC+opencv 显示mat图像
- 在MFC图像控件上显示opencv Mat格式图片
- 彻底解决显示Opencv中Mat图像到Mfc窗口问题
- 在MFC中调用GDI+显示图像Mat图像
- 在MFC中显示OpenCV的Mat图像矩阵 ShowMatImgToWnd(GetDlgItem(IDC_ShowImg) , matFrame);
- 利用GDI+在MFC中显示OpenCV中的Mat图像的关键点
- 在MFC中显示OpenCV的Mat格式图像和打开摄像头
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- 使用OpenCV在MFC中显示图像
- 在MFC中显示opencv图像
- MFC/C# 中显示 OpenCV 的 Mat
- 说明
- 积分看到三个号
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第3章节--SharePoint 2013 开发人员工具 使用Napa开发SharePoint应用程序
- 技术还是管理?
- 利用jQuery Ajax技术实现每隔5秒向某页面传值
- OpenCV+MFC快速应用:如何在MFC中显示Mat图像
- 电商WMS与云仓储-E店宝-陈涛
- gdb调试命令
- apache+JK+tomcat负载均衡配置(windows)
- 大争之世,不在竞争中崛起,就在竞争中被吃掉
- 《Linux》天影linux系列笔记一——linux常用命令详解:gunzip
- 关于make sure class name exists, is public, and has an empty constructor that is public解决办法
- 利用监听器实现网站在线人数统计
- 多业务线受挫 小米深陷滑铁卢泥潭