前述のように、カメラからフレームを取得しようとすると、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;
}
出力には、次の 2 つのエラーがあります (最初の例外と未処理の例外、イタリア語で申し訳ありません)。
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/ にある元のファイルを置き換えました。これですべてが機能するようになりました。