2013-10-26 8 views
0

우분투에서 opencv C++을 사용하여 avi 파일로 재생하려고하는데 출력이 없습니다. 내가 사용하는 코드는 표준 코드이며, avi 비디오를 재생하는 데 사용되지만 온라인 출력이없는 온라인에서 발견되었습니다. 그리고 예 비디오는 내 src 코드 폴더와 같은 디렉토리에 있습니다. 필자가 보는 유일한 것은 while 루프의 첫 번째 반복에서 프레임이 비어서 끊어지는 것입니다. 하지만 비디오가 vlc에서 작동하면서 왜 일어나는지 알 수 없습니다. 나는 지난 4 ~ 5 시간 동안 그 일에 매달 렸기 때문에 정말로 도움이 될 것입니다. #include "cv.h"// 기본 OpenCV 함수를 사용하기 위해 포함합니다. #include "highgui.h"// GUI 함수를 사용하려면 포함하십시오.OpenCV - AVI 파일 재생

int main(int argc, char** argv) 
{ 
cvNamedWindow("Example3", CV_WINDOW_AUTOSIZE); 

//CvCapture* capture = cvCreateFileCapture("20051210-w50s.flv"); 
CvCapture* capture = cvCreateFileCapture("tree.avi"); 
/* if(!capture) 
    { 
     std::cout <<"Video Not Opened\n"; 
     return -1; 
    }*/ 
IplImage* frame = NULL; 

while(1) { 

    frame = cvQueryFrame(capture); 
    //std::cout << "Inside loop\n"; 
    if (!frame) 
     break; 
    cvShowImage("Example3", frame); 
    char c = cvWaitKey(33); 
    if (c == 27) break; 
} 
cvReleaseCapture(&capture); 
cvDestroyWindow("Example3"); 
std::cout << "Hello!"; 
return 0; 
} 
+0

내 코드가 잘 작동합니다. – Haris

+0

정말 ?? ffmpeg와 관련이있을 수 있을까요 ?? – ueg1990

+0

ffmpeg가 있어야합니다. 시스템에 설치되어 있습니까? OpenCV를 설치할 때 설치 되었습니까? 왜 if (! capture) {} 블록을 주석 처리 했습니까? 동영상을 열 수 없다고하면 파일 이름이 잘못되었거나 ffmpeg가 설치되어 있지 않습니다. – JonesV

답변

0

디버그 모드 또는 릴리스 모드에서 실행 중이십니까? openCV 2.4.4에는 opencv_ffmpeg244.dll (릴리스 .dll) 만 있지만 디버그에는 없습니다. 해제 모드로 전환 해보십시오.

0

제거 코드 라인 :

char c = cvWaitKey(33); 
if (c == 27) break; 

대신 이들의 단지 추가 :

cvWaitKey(33); 

수 있음이 help.Here 나를 위해 좋은 일을 파이썬 코드입니다 수 :

import cv 
if __name__ == '__main__': 
    capture = cv.CreateFileCapture('Wildlife.avi') 
    loop = True 
    while(loop): 
    frame = cv.QueryFrame(capture) 
    if (frame == None): 
      break; 
    cv.ShowImage('Wild Life', frame) 
    char = cv.WaitKey(33) 
    if (char != -1): 
     if (ord(char) == 27): 
      loop = False 

또는 this이 도움이 될 수 있습니다.