在vs2010中如何利用opencv使用“打开文件”选择路径读取视频信息

问题描述:

代码如下,在网上找了好多都是使用绝对路径才能读取视频信息,我想用“打开文件”取得的文件路径,利用cvCaptureFromAVI读取视频应该怎么处理?或者可以用opencv提供的其他函数来读取视频的相关信息吗?

以下代码的错误提示:“cvCreateFileCapture”: 不能将参数 1 从“CString”转换为“const char *”。

由于opencv的视频读取中要求的文件路径是char类型,而如果用类型转换将CString类型转换成char类型的话又会由于转义字符“\”的存在造成错误,求指导怎么破。

    TCHAR szFilter[] = _T("avi格式文件(*.avi)|*.avi|所有文件(*.*)|*.*||");   
// 构造打开文件对话框   
CFileDialog fileDlg(TRUE, _T("txt"), NULL, 0, szFilter, this);   
CString strFilePath;   

// 显示打开文件对话框   
if (IDOK == fileDlg.DoModal())   
{   
    // 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里   
    strFilePath = fileDlg.GetPathName();
          m_vpath=strFilePath;
            CvCapture *capture = cvCreateFileCapture(m_vpath);

 CvCapture *capture = cvCreateFileCapture((CW2A)m_vpath);

CvCapture *capture = cvCreateFileCapture((LPCTSTR)m_vpath);

博主,你好!问题解决了吗?我也遇到了这个问题

m_vpath是什么东西啊 博主

CString filter;
filter = "All Files (*.*)|*.*|JPGtu图片(*.jpg)|*.jpg|BMP图像(*.bmp)|*.bmp|PNG图片(*.png)|*.png||";
CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter);
if (dlg.DoModal() == IDOK)
{
path = dlg.GetPathName();
// path = dlg.GetFileName();
MessageBox(path);
}

Mat src;
char path1[100] ;
memset(path1, 0, sizeof(path1));
memcpy(path1, (LPCTSTR)path, path.GetLength());

src = imread(path1);


if (!src.data)
{
    MessageBoxA(NULL,"could not load it","ss",IDOK);
    return;
}
imshow("1", src);

求教,如何使用路径