这里是新用户,对使用 OpenCV 进行编程相当陌生。
我正在使用 Visual Studio 2012,并按照说明安装了所有 OpenCV 模块,运行代码以捕获视频流和过滤器/等没有问题。
我正在尝试在此处重现 stanford U 生成的光流示例的代码: http ://robots.stanford.edu/cs223b05/notes/CS%20223-B%20T1%20stavens_opencv_optical_flow.pdf
但似乎 cvQueryFrame 出现访问冲突错误,所以我编写了一个简单的函数来测试这个问题:
int get_flow(){
CvCapture *input_video = cvCaptureFromFile("C:\\test.avi");
cvQueryFrame(input_video);
while(1){
if( cvWaitKey( 15 )==32 ) //wait until space key pressed
{
break;
}
}
return 0;
}
我已经检查了 test.avi 是否在正确的位置,但是每当任何代码(此代码或示例代码)运行 cvQueryFrame 命令时都会出现以下错误,如下所示:
First-chance exception at 0x75E6A048 (msvcrt.dll) in Win32Project3.exe: 0xC0000005: Access violation reading location 0x011908C0.
Unhandled exception at 0x75E6A048 (msvcrt.dll) in Win32Project3.exe: 0xC0000005: Access violation reading location 0x011908C0.
据我了解,这意味着 msvcrt.dll 发出有关访问某些内存点的错误,但我无法弄清楚问题是什么。
我已经单独使用了 cvGrabFrame 没有问题,但是一起使用 cvGrabFrame 和 cvRetrieveFrame 或者单独使用 cvRetrieveFrame 也会引发 msvcrt.dll 访问错误。
我不太确定在哪里寻找错误,或者一起寻找问题。我找不到任何特定的解决方案来处理这个问题。有任何想法吗?(PS - 我在调试模式下运行 VS2012,并且所有的 opencv 库都在 x64 机器上的 x86 中工作,并且 chrome 也是打开的)
谢谢!