2012-09-26 4 views
1

opencv (비디오는 디스크에 저장된 avi 파일)을 사용하여 비디오를 재생하려고합니다. 그러나,이 프로그램은 cap_ffmppeg.cpp에 다음 줄에 실행을 중지 :opencv를 사용하여 비디오를 재생하는 방법은 무엇입니까?

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; 
} 

어떤 생각 : 여기

프로그램입니까?

+0

'cv :: VideoCapture'는 생성자에서 문자열을 기대하지만 문자 배열을 사용하고 있습니다. 나는 이것이 작동하는지 확실하지 않다. 또한 파일의 절대 경로를 사용해 보셨습니까? –

+0

이 파일을'VideoCapture capture ("C : \\ video.avi");로 변경했지만 문제가 지속됩니다 ... – zoran119

+0

'isOpened' 검사가 통과되면 파일을 읽는 것이 문제가되어서는 안됩니다. 다른 파일을 사용해 보셨습니까? –

답변

0

OpenCV가 압축되지 않은 비디오를 재생할 수 없다는 것이 드러났습니다. 그것을 압축하고 모두 잘 ... 왜 원래의 문제가 존재하는지 모르겠다.

1

x64를 사용하는 경우. opencv_ffmpeg245_64.dll을 사용하십시오.이 문제가 해결 될 수 있습니다. opencv_ffmpeg245_64.dll의 이름을 opencv_ffmpeg245로 변경하면 문제가 해결 될 수 있습니다.

관련 문제