MFC+OPENCV+显示MAT类型图像
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类型图像相关推荐
- MFC+opencv 显示mat图像
VS2015+opencv3.0 MFC显示图片中方法三在使用时, 只能显示彩色图像,灰度图像显示有问题,经查找,是没有设置图像调色板的原因 图片控件宽度不为4的倍数 显示错误, 修改 代码 /*** ...
- VS+MFC+Opencv显示视频和图像。
读入图片: void CDrawImgVideoDlg::OnBnClickedShowImg() { // TODO: 在此添加控件通知处理程序代码 CDC *pDC = GetDl ...
- OpenCV的Mat类型以及基本函数使用
OpenCV的Mat类型以及基本函数使用 Mat和IplImage的区别 Mat和IplImage的主要区别 在OpenCV中IplImage是表示一个图像的结构体,也是从OpenCV1.0到目前最为 ...
- C++下的OpenCV中Mat类型存储的图像格式
在调用CV进行图像处理时,经常涉及图像格式转换,经常出现原始图像输入后CV_32F与ushort之间的数据差异导致程序报错,可使用std::cout << "dilated_ty ...
- 关于怎么怎么把 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 ...
- C++Opencv中Mat类型创建与读取某点像素值
1.创建Mat,包含数据类型: Mat img: img.create(Size,type); 其中 type类包含: CV_8UC1.CV_8UC3.CV_32S.CV_32F等,16.64位用的少 ...
- 【OpenCV】IplImage类型图像ROI矩形区域的快速获取
一直使用的是OpenCV C++的接口,但是有些只能用纯c的环境下,就不得不用c接口了,IplImage是c接口图像数据最基本的数据结构,获取其ROI区域的过程如下,首先通过cvSetImageROI ...
- mfc怎么显示jpg png图像
如果是VS2005以上版本可以直接使用MFC自带的CImage类,如果不是可以用网上比较流行的CxImage,或者使用GDI+ 转载于:https://www.cnblogs.com/huhu0013 ...
- opencv的mat赋值_OpenCV Mat 类型定义和赋值
1.一般的Mat定义方法:cv::Mat M(height,width,),例: cv::Mat M(480,640,CV_8UC3); 表示定义了一个480行640列的矩阵,矩阵的每个单元的由三个( ...
最新文章
- c++学习笔记内联函数,函数重载,默认参数
- 如何在Keras中训练大型数据集
- RabbitMQ入门-发送消息机制的介绍
- Avalonia跨平台入门第八篇之控件的拖放
- Fast Matrix Factorization for Online Recommendation with Implicit Feedback论文代码分析
- 资源图与死锁定理的灵活运用
- Linux实训项目——第八章:配置网络接口及远程管理
- 如何提升你的面试机会?
- magedu第一天学习(计算机基础部分)
- kali2019安装netspeed教程
- 联盟链Quorum(基于raft共识)部署流程(三)- 部署基于Quorum链的区块链浏览器
- [转载]无线网络优化
- 数学建模之灰色关联分析
- 加薪引发的难题 穆穆-movno1
- 3 移动机器人路径规划(1- 栅格地图绘制)
- 手机app抓包,无视SSLPinning
- matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...
- “创意云”大规模在线创作服务平台
- 质量与服务兼顾 大型网吧组网方案推荐(转)
- 使用Metasploit框架测试ms08-067模块
热门文章
- mysql500万数据查询速度_是什么影响了数据库查询速度
- python学习-文件的读写操作
- linux内存分析命令,Linux進程內存分析pmap命令
- iis php报错无法屏蔽,php屏蔽错误消息
- 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
- oracle 加全文索引,oracle全文索引的创建和使用
- sqlsever无法重新启动计算机,有关SqlServer 2008安装及卸载的一些问题,安装检测时显示重新启动计算机....
- 网速上不去,这锅真是路由器的?
- 我是这样用extern的...
- android滚动条布局横向,Android自定义ViewGroup实现可滚动的横向布局(2)