vs2015+opencv3+mfc 基于对话框按键选择图片并显示

vs2015+opencv3+mfc 基于对话框按键选择图片并显示_第1张图片
vs2015+opencv3+mfc 基于对话框按键选择图片并显示_第2张图片
vs2015+opencv3+mfc 基于对话框按键选择图片并显示_第3张图片
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() 点击打开链接


你可能感兴趣的:(vs2015+opencv3+mfc 基于对话框按键选择图片并显示)