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 );

    评论

报告相同问题?

悬赏问题

  • ¥15 关于下拉菜单选项关联的问题
  • ¥15 如何修改pca中的feature函数
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况
  • ¥15 画两个图 python或R