如前所述,当我尝试从相机获取帧时,我收到了 VSFilter.dll 的 0xC0000005 读取访问冲突错误。我尝试了在网上和 OpenCV 文档中找到的不同示例代码,但仍然出现错误。例如,这是我现在使用的代码:
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
int main(int, char**)
{
VideoCapture cap(0);
if(!cap.isOpened()) return -1;
Mat frame;
namedWindow("Camera",1);
while(1)
{
cap >> frame;
imshow("Camera", frame);
if(waitKey(30) >= 0) break;
}
return 0;
}
并且在输出中有这两个错误(第一次机会例外和未处理的例外,对意大利人感到抱歉):
Eccezione first-chance in 0x000007FEEB115791 (VSFilter.dll) in OpenCV.exe: 0xC0000005: violazione di accesso durante la scrittura del percorso 0x000000000468E000.
Eccezione non gestita in 0x000007FEEB115791 (VSFilter.dll) in OpenCV.exe: 0xC0000005: violazione di accesso durante la scrittura del percorso 0x000000000468E000.
所以代码很简单,应该不是问题,我想知道为什么错误与 VSFilter.dll(DirectShow/VirtualDub/Avisynth 的 VobSub 和 TextSub 过滤器)有关?
我正在使用 OpenCV 2.4.5 和 VisulaStudio 2012。
解决了
我已经下载了 VSFilter.dll 并替换了 Windows/system32/ 中的原始文件,现在一切正常!