在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);
求教,如何使用路径