1

を使用してビデオを再生しようとしていopencvます(ビデオはディスクに保存されているaviファイルです)。ただし、プログラムは次の行で実行を停止しますcap_ffmppeg.cpp

if(!ffmpegCapture ||
   !icvRetrieveFrame_FFMPEG_p(ffmpegCapture,&data,&step,&width,&height,&cn))
   return 0;

エラーは次のとおりAccess violation reading locationです。...したがって、最初capture >> frameに実行されたときにセグメンテーション違反が発生しています。

プログラムは次のとおりです。

#include<iostream>
#include<fstream>
#include<cv.h>
#include<highgui.h>
#include<opencv2/nonfree/features2d.hpp>
using namespace std;
using namespace cv;


int main(int argc, char *argv[])
{
    if (argc <= 1)
    {
        printf("Usage: %s video\n", argv[0]);
        return -1;
    }

    VideoCapture capture(argv[1]);


    if(!capture.isOpened())
    {
        printf("Failed to open the video\n");
        return -1;
    }

    for(;;)
    {
        Mat frame;
        capture >> frame; // get a new frame from camera
    }

    return 0;
}

私が間違っていることについて何か考えはありますか?

4

2 に答える 2

1

x64を使用している場合。これが解決する opencv_ffmpeg245_64.dll を使用してください。問題が解決する場合があります。または、opencv_ffmpeg245_64.dll の名前を opencv_ffmpeg245 に変更すると、問題が解決する場合があります。

于 2013-09-23T10:38:23.737 に答える
0

OpenCV が圧縮されていないビデオを再生できないことが判明しました。それを圧縮し、すべてが順調です...元の問題がなぜ存在するのかわかりません。

于 2012-10-04T10:56:35.457 に答える