2011-06-14 101 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 2011-06-14 21:13:12

回答

2

您可以设定下一帧阅读的

cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, min_frame); 
当然

手段只为视频而不是相机。读取的下一个帧将为min_frame,如果未再次设置帧位置,读数将从此处正常继续(在min_frame之后的帧将被读取)。所以这是一个完美的选择,因为您只需要在开始时调用它。

+0

非常感谢。这工作完美! – 2011-06-15 03:26:35

相关问题