问题描述
- 无法从“CString”转换为“LPCSTR
-
目的是利用文件对话框,在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) *.jpgimage files (*.bmp)*.bmpAll Files (*.*) *.*"); 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);
}
解决方案
m_mat1 = cv::imread( (char *)mPath, 1 );
解决方案二:
LPCSTR与CString转换
LPCSTR与CString转换
cstring和LPCSTR的转换
解决方案三:
m_mat1 = cv::imread( mPath.GetBuffer(mPath.GetLength()), 1 );
时间: 2024-09-19 12:02:35