目的是利用文件对话框,在MFC对话框中加载一副图片。代码从别的项目拷贝
过来的,原项目可以编译通过,但是在我新建的项目中就提示出错,提示mPath无法从CString转换为LPCSTR,这个要怎么解决呀?
void CMat_openimgDlg::OnBnClickedopen()
{
// TODO: 在此添加控件通知处理程序代码
// TODO: 在此添加控件通知处理程序代码
CFileDialog dlg(TRUE, _T("*.jpg"), NULL,
OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
NULL, NULL); // 选项图片的约定
dlg.m_ofn.lpstrTitle = _T("打开实时图"); // 打开文件对话框的标题名
dlg.m_ofn.lpstrFilter=_T("image files (*.jpg) \0*.jpg\0image files (*.bmp)\0*.bmp\0All Files (*.*) \0*.*");
if( dlg.DoModal() != IDOK ) // 判断是否获得图片
return;
CString mPath = dlg.GetPathName(); // 获取图片路径
m_mat1 = cv::imread( LPCSTR(mPath), 1 ); // 读取图片、缓存到一个局部变量 ipl 中
if( !m_mat1.data ) // 判断是否成功载入图片
return;
DrawMatToHDC( m_mat1, IDC_Showing ); // 调用显示图片函数
}
void CMat_openimgDlg::DrawMatToHDC(cv::Mat img, UINT ID)//------对应新版Mat 的显示函数
{
CDC *pDC = GetDlgItem(ID)->GetDC();
HDC hDC= pDC->GetSafeHdc();
CRect rect;
GetDlgItem(ID)->GetClientRect(&rect);
CvvImage cimg;
IplImage ipm = img;
cimg.CopyOf(&ipm);
cimg.DrawToHDC_SCALE(hDC,&rect);
ReleaseDC(pDC);
}