2016-10-04 3 views
0

나는이 코드가 실행될 때 결과를 기대하고 매초마다 한 프레임을 얻는다.나는 매초마다 그 프레임을 얻고 싶다. (opencv)

캡 버퍼가있을 수 있으므로 프레임이 잘리지 않습니다.

이 프레임은 연속입니다.

나는

문제는 무엇인가 하나 개의 프레임을 확보 할 1 초 후 (1 초 프레임 후) 프레임을 얻기 위해?

VideoCapture cap(0) ; 
while(1){ 
    cap >> frame ; 
    sleep(1) ; 
    imshow("test", frame) ; 
    if(waitKey(30)>=0) break ; 
} 
+0

내가 라즈베리 PI3를 사용하고 –

+0

아마 이러한 버퍼가 picam 당신이 그것을 직접 변경할 수 없습니다 : http://answers.opencv.org/question/90583/videocapture-buffer/ – Micka

답변

0

버퍼가 당신이 waitKey를 사용하여 프레임을 건너 뛰도록 허용하지 않기 때문에이 까다 롭다는 ...이 현재 코드는 한 사용자가 지정한로 기다리는 것을 의미합니다, 다음 바로 다음 프레임을 보여 지연 이후의 것이 아닙니다.

그러나 t = {1sec, 2sec ...}에만 오는 프레임을 표시하려면 다음과 같이 getTickCount() 및 getTickFrequency() 함수를 사용하여 직접 타이머를 생성 할 수 있습니다.

VideoCapture cap(0) ; 
int t=getTickCount()/getTickFrequency();//at the starting of loop 
while(1){ 
    cap >> frame ; 
    //sleep(1); 
    if(getTickCount()/getTickFrequency()-t>=1000){//in milliseconds 
    //here getTickCount() is constantly updated, but t is fixed till you reset it 
      imshow("test", frame) ; 
      t=getTickCount()/getTickFrequency();//reset the difference back to 0 
    } 
    if(waitKey(30)>=0) 
    break ; 
} 
관련 문제