qq_34023390 2016-03-29 05:33 采纳率: 0%
浏览 3457
已结题

无法从“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) \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);
}

  • 写回答

2条回答 默认 最新

  • lx624909677 2016-03-29 15:30
    关注

    m_mat1 = cv::imread( mPath.GetBuffer(mPath.GetLength()), 1 );

    评论

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)