MFC 显示Mat,不使用Mat到CImage转换
2018-01-04 19:28
176 查看
【转自http://blog.csdn.net/dcrmg/article/details/51913160】
以下是Key code:
1. 在OnInitDialog初始化函数里添加代码
[cpp] view
plain copy
namedWindow("view",WINDOW_AUTOSIZE);
HWND hWnd = (HWND) cvGetWindowHandle("view");
HWND hParent = ::GetParent(hWnd);
::SetParent(hWnd, GetDlgItem(IDC_STATIC_Pic)->m_hWnd);
::ShowWindow(hParent, SW_HIDE);
其中IDC_STATIC_Pic是Picture Control图形控件的ID;
2. 定义打开图片按钮事件
[cpp] view
plain copy
CString picPath; //定义图片路径变量
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
NULL, this); //选择文件对话框
if(dlg.DoModal() == IDOK)
{
picPath= dlg.GetPathName(); //获取图片路径
}
//CString to string 使用这个方法记得字符集选用“使用多字节字符”,不然会报错
string picpath=picPath.GetBuffer(0);
Mat image=imread(picpath);
Mat imagedst;
//以下操作获取图形控件尺寸并以此改变图片尺寸
CRect rect;
GetDlgItem(IDC_STATIC_Pic)->GetClientRect(&rect);
Rect dst(rect.left,rect.top,rect.right,rect.bottom);
resize(image,imagedst,cv::Size(rect.Width(),rect.Height()));
imshow("view",imagedst);
适应图形控件的显示效果:
注: Picture Control控件类型不需要必须是矩形(Rectangle),使用默认的类型帧(Frame)也可以正常显示。
以下是Key code:
1. 在OnInitDialog初始化函数里添加代码
[cpp] view
plain copy
namedWindow("view",WINDOW_AUTOSIZE);
HWND hWnd = (HWND) cvGetWindowHandle("view");
HWND hParent = ::GetParent(hWnd);
::SetParent(hWnd, GetDlgItem(IDC_STATIC_Pic)->m_hWnd);
::ShowWindow(hParent, SW_HIDE);
其中IDC_STATIC_Pic是Picture Control图形控件的ID;
2. 定义打开图片按钮事件
[cpp] view
plain copy
CString picPath; //定义图片路径变量
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
NULL, this); //选择文件对话框
if(dlg.DoModal() == IDOK)
{
picPath= dlg.GetPathName(); //获取图片路径
}
//CString to string 使用这个方法记得字符集选用“使用多字节字符”,不然会报错
string picpath=picPath.GetBuffer(0);
Mat image=imread(picpath);
Mat imagedst;
//以下操作获取图形控件尺寸并以此改变图片尺寸
CRect rect;
GetDlgItem(IDC_STATIC_Pic)->GetClientRect(&rect);
Rect dst(rect.left,rect.top,rect.right,rect.bottom);
resize(image,imagedst,cv::Size(rect.Width(),rect.Height()));
imshow("view",imagedst);
适应图形控件的显示效果:
注: Picture Control控件类型不需要必须是矩形(Rectangle),使用默认的类型帧(Frame)也可以正常显示。
相关文章推荐
- 在VC中使用CImage转换图片格式,显示jpg等格式图片
- 将OpenCV:Mat矩阵图像转换为MFC:CImage图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- MFC:CImage显示OpenCV:Mat矩阵图像
- OpenCV的Mat与ATL/MFC的CImage相互转换
- OpenCV的Mat与ATL/MFC的CImage相互转换
- Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题
- 为何mfc不使用 dynamic_cast这样的基指针想派生类指针的显示转换? .
- MFC:CImage显示OpenCV:Mat矩阵图像
- python︱matplotlib使用(读入、显示、写出、opencv混用、格式转换...)
- MFC中使用CImage显示缩略图的方法
- 在VC中使用CImage转换图片格式以及显示
- MFC:CImage显示OpenCV:Mat矩阵图像
- 转换排列Qt中使用OpenCV显示图片时,Mat结构转换为QImage结构的问题
- Qt + opencv mat转换成qimage后无法使用qpainter显示
- 在VC中使用CImage转换图片格式,显示jpg等格式图片
- Picture control显示图像及Mat转换为CImage
- MFC:CImage显示OpenCV:Mat矩阵图像
- 为何mfc不使用 dynamic_cast这样的基指针向派生类指针的显示转换?(转)
- 利用CImage完成图片的显示、拷贝、绘制及转换图片格式