2012-02-29 10 views
3

opencv를 처음 사용하고 비디오 파일에 쓸 때 문제가 있습니다. 기본적으로 나는 HD 웹캠을 읽고 avi로 씁니다. runable 코드 :opencv를 사용하여 녹음 할 때 비트 전송률에 대한 비트 전송률 허용치가 너무 작음

#include "cv.h" 
#include "highgui.h" 
int main(int argc, char** argv){ 
    CvCapture* capture=NULL; 
    capture=cvCreateCameraCapture(0); 
    if(!capture){ 
      return -1; 
    } 
    IplImage *bgr_frame=cvQueryFrame(capture); 
    double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 
    CvSize size=cvSize((int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH), 
          (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT));   
CvVideoWriter* writer=cvCreateVideoWriter(argv[1], 
              CV_FOURCC('M','J','P','G'), 
              fps, 
              size); 
    cvNamedWindow("Video", CV_WINDOW_AUTOSIZE); 
    while((bgr_frame=cvQueryFrame(capture))){ 
      cvWriteFrame(writer, bgr_frame); 
      cvShowImage("Video", bgr_frame); 
      char c=cvWaitKey(60); 
      if(c==27){ 
        break; 
      }   
    }   
    cvReleaseVideoWriter(&writer); 
    cvReleaseImage(&bgr_frame); 
    cvReleaseCapture(&capture); 
    return 0; 
} 

실행, 나는 카메라가 맥북에 HD 웹캠 오류를

Output #0, avi, to 'test.avi': 
Stream #0.0: Video: mjpeg, yuvj420p, 1280x720, q=2-31, 117964 kb/s, 90k tbn 
[mjpeg @ 0x7fd55b805600] bitrate tolerance too small for bitrate 
WARNING: Could not create empty movie file container. 
OpenCV Error: Assertion failed (dst.data == dst0.data) in cvCvtColor, file /opt/local/var/macports/build/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_graphics_opencv/opencv/work/OpenCV-2.3.1/modules/imgproc/src/color.cpp, line 3175 
terminate called throwing an exceptionAbort trap: 6 

를 얻을. 문제를 일으키는 카메라입니까? 그렇다면 비트 전송률 허용치를 낮출 수 있습니까? opencv를 처음 사용했습니다. 감사!

그런데 argv [1] .avi가없는 경우 CvVideoWriter가 새 파일을 만들 수 있습니까?

+0

파이썬 라이브러리에서 같은 문제가 있습니다. –

+0

@DanielFlores 카메라의 FPS는 0입니다. – YankeeWhiskey

답변

2

예, cvCreateVideoWriter는 아직 존재하지 않을 때 새 파일을 만듭니다.

그리고 모든 웹캠 드라이버에서 FPS 감지 코드가 구현되지 않아 문제가 발생합니다.

double fps=(double)cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 
assert(fps>0.0); 

를 그리고 그것을 실행 : 일 어설 추가로 Mac에서 코드를 시도했다가 생성되지 않는 이유 FPS와

./w x.avi 
Assertion failed: (fps>0.0), function main, file w.cpp, line 11. 
Abort trap: 6 

AVI 파일이 실행되지 않습니다이입니다.

+2

답이 늦었지만 어쨌든 고맙습니다. – YankeeWhiskey