【发布时间】:2013-11-05 02:13:14
【问题描述】:
我正在从 EmguCV 交换到 OpenCV,以便我可以尝试一些尚未被 EmguCV 包装的 OpenCV 函数。但是,我无法加载我的简单测试视频文件,该文件在 EmguCV 中加载没有问题。查看 EmguCV 源代码,我注意到他们调用 OpenCV C 函数而不是 C++ 来初始化文件(或网络摄像头)的捕获,因此我编写了以下测试代码(在 this answer 的帮助下)。这是我的简单代码
int _tmain()
{
string filename = "sample.wmv";
if (!FileExists(filename.c_str))
{
cout << "File does not exist" << endl;
return -1;
}
else
{
cout << "File exists" << endl;
VideoCapture cap (filename);
if(!cap.isOpened())
{
cout << "Failed to open file in OpenCV C++" << endl;
//Trying C API too just-in-case
CvCapture* capture = cvCreateFileCapture(filename.c_str());
if (!capture)
{
cout << "Failed to open file in OpenCV C" << endl;
}
else
{
//Grab frames and do stuff
cvReleaseCapture(&capture);
}
return -1;
}
else
{
//Grab frames and do stuff
}
}
return 0;
}
当我运行它时,我得到了输出
File exists
Failed to open file in OpenCV C++
Failed to open file in OpenCV C
无论文件如何,都会发生这种情况,即“sample.wmv”、“sample.avi”甚至 OpenCV 示例文件“tree.avi”之一都会发生这种情况。
为什么?怎么回事?
(我在 Windows 8 和 Windows 8.1 机器上运行 OpenCV 2.4.6。)
【问题讨论】:
-
您的系统是否拥有必要的权限?你能用 opencv 打开任何东西(即图像或 XML 文件等)吗?
-
是的 - jpeg 可以正常打开。加上 EmguCV 项目成功打开相同的视频文件。
-
你有样品吗?我可以为你试一试,然后我会告诉你它是否工作正常。
-
谢谢@Mzk 我把sample.wmv放在这里了:dropbox.com/sh/1lp9vb9wgfg7l1l/FDddArU10f
-
稍后我会告诉你的。谢谢。