2010-12-03 16 views
1

openCV에서 카메라의 비디오를 캡처하고 파일에 저장하는 간단한 응용 프로그램을 만들고 싶습니다. 문제는 다음과 같습니다.OpenCV, 카메라에서 캡처하여 파일로 저장

1- 카메라의 프레임 속도에 액세스하는 방법. cvGetCaptureProperty()는 항상 0의 FPS 값을 반환합니다.

캡처 방법, 예를 들어 10 초 캡처 시간을 제한 즉, 제발 소요하는 시간을 제어하는 ​​방법 2 ... 여기

내 코드

void main(){ 

    CvCapture *capture = cvCaptureFromCAM(0); 
    int width = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH); 
    int height = (int)cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT); 
    CvVideoWriter *writer = cvCreateVideoWriter("myCamCapture.avi", -1, 30, cvSize(width, height)); 
    cvNamedWindow("d", CV_WINDOW_AUTOSIZE); 
    IplImage *frame = 0; 

    while(1) 
    { 
     frame = cvQueryFrame(capture); 
     cvShowImage("d",frame); 
     cvWriteFrame(writer, frame); 
     char c = cvWaitKey(30); 
     if(c == 27) break; 
    } 
} 

감사입니다 사전

답변

1

1 (편집)에서 당신은 : this site near the bottom of the page에 따르면,

를 호출 할 필요가

먼저 올바른 속성을 얻으려면 이후

2

int fps  = (int) cvGetCaptureProperty(capture, CV_CAP_PROP_FPS); 

호출 시도 : 당신은 cvWaitKey (밀리 초) 또는 단순히 잠을 사용할 수 있습니다. 어떻게 이미지를 캡처합니까? 루프는 어떻게 생겼습니까?

+0

당신은 내가 카메라에서 캡처하고 FPS = 0, 통지를받을 .... 그리고 난 –

+0

을 실행하기 위해 노력하고 코드를보고 내 게시물 업데이트를 볼 썼다 결과 파일은 캠 –

+0

에서 보았던 것보다 더 높은 프레임 속도를 가졌지 만 소스 프레임의 일부는 여러 번 저장되는 반면 가능합니다. 그러나 압축이이를 보상하므로 어떤 단점도 있어서는 안됩니다. – Atmocreations

0

1 - 모든 카메라가 드라이버가 지원하는 프레임 속도를 제공하지는 않습니다.

2 - 10 초의 비디오를 캡처하려면이 프레임이 몇 개의 프레임인지 확인하고 대신 (1)을 실행하십시오. 내가 코드 줄을 쓸 때

// assumign you want 10seconds of 3fps = 300 frames total 
for (int iframe=0;iframe<300;iframe++) { 

} 
관련 문제