1. 创建一个基于对话框的MFC项目
2. 在对话框中添加控件
1) picture control 控件,命名为IDC_PICTURE
2) button 控件,命名为IDC_ShowPic(目前只做了选择图像)
3. button控件添加函数
void CShowPicDlg::OnBnClickedShowpic() //打开文件,选择图片,并显示图片
{
// TODO: 在此添加控件通知处理程序代码
CString filePath; //保存打开文件的路径
CString defaultDir = _T("D:\\video"); //设置默认打开文件夹
CString fileFilter = _T("文件(*.jpg;*.bmp)|*.jpg;*.bmp|All File (*.*)|*.*||"); //设置文件过滤
CFileDialog fileDlg(true, defaultDir, _T(""), OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, fileFilter, NULL);
//弹出选择文件对话框
if (fileDlg.DoModal() == IDOK)
{
filePath = fileDlg.GetPathName();//得到完整的文件名和目录名拓展名
CString filename = fileDlg.GetFileName();
}
//Picture Control控件显示图片
CDC *pDC = GetDlgItem(IDC_PICTURE)->GetDC(); //根据ID获得窗口指针再获取与该窗口关联的上下文指针
HDC hdc = pDC->GetSafeHdc(); // 获取设备上下文句柄
CRect rect; // 矩形类
GetDlgItem(IDC_PICTURE)->GetClientRect(&rect); //获取box1客户区
CvvImage cimg;
IplImage *src; // 定义IplImage指针变量src
char * A = CStringToChar(filePath); //CString转换Char
src = cvLoadImage(A, -1); // 将src指向当前工程文件目录下的图像
cimg.CopyOf(src, src->nChannels);
cimg.DrawToHDC(hdc, &rect); //输出图像
ReleaseDC(pDC);
cimg.Destroy(); //销毁
}
其中,变量filepath是CString类型,需要转化为char。
一个博主写了这个转化函数
CStringToChar()
点击打开链接