问题描述
|
使用OpenCV(HighGUI.h),我在main中有以下代码:
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
进入有条件的。有什么建议么?
解决方法
您可以通过以下方式设置要读取的下一帧
cvSetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES,min_frame);
当然仅适用于视频,不适用于相机。如果您不再次设置帧位置,则下一帧读数将为min_frame
,并且将从此处正常继续读取((3ѭ之后的帧将被读取)。因此非常适合,因为您只需要在开始时就称呼它即可。