2011-06-14 5 views
1

사용 OpenCV의 (HighGUI.h은), 나는 주에서이 코드를 가지고 :cvQueryFrame 또는 cvGrabFrame의 시작 프레임을 설정하는 방법이 있습니까?

int frame_count = 0; 
while((frame=cvQueryFrame(capture)) != NULL && (frame_count <= max_frame)) { 
     //If the current frame is within the bouds min_frame and max_frame, write it to the new video, else do nothing 
     if (frame_count >= min_frame){ 
      cvWriteFrame(writer, frame); 
     } 
     frame_count++; 
    } 

프레임에 대한 캡처를 조회하고, 프레임이 경계 min_frame 및 max_frame, 모두 정수 이내 인 경우에만 기록합니다. 코드는 훌륭하게 작동하지만 아주 큰 비디오를 처리하는 데는 효율적이지 않습니다. 왜냐하면 min_frame까지 이어지는 프레임에 대해 캡처를 쿼리해야하기 때문에 코드를 작성하지는 않기 때문입니다. 나는 cvQueryFrame을 min_frame에서 시작하여 그 방법을 사용하는 대신에 얻을 수있는 방법이 있는지 궁금하다. 이 max_frame 일어나서 때 나는 조건부 반면에

frame_count <= max_frame 

이동 이후 이미 중지합니다. 어떤 제안?

+0

카메라 또는 비디오로 작업하고 있습니까? – karlphillip

답변

2

는 당신은 동영상이 아닌 카메라 코스의

cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, min_frame); 

의 수단을하여 읽고 다음 프레임을 설정할 수 있습니다. 다음 프레임 읽기는 min_frame이 될 것이고 프레임 위치를 다시 설정하지 않으면 읽기가 정상적으로 계속됩니다 (min_frame 이후의 프레임이 읽혀질 것입니다). 따라서 처음 시작할 때 호출해야하므로 완벽하게 맞습니다.

+0

와우 감사합니다. 그것은 완벽하게 작동했습니다! –

관련 문제