C++ 有没有办法设置cvQueryFrame或cvGrabFrame的开始帧?
使用OpenCV(HighGUI.h),我主要有以下代码:C++ 有没有办法设置cvQueryFrame或cvGrabFrame的开始帧?,c++,opencv,C++,Opencv,使用OpenCV(HighGUI.h),我主要有以下代码: 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
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++;
}
int frame\u count=0;
而((frame=cvQueryFrame(capture))!=NULL&&(frame\u count=min\u frame){
cvWriteFrame(writer,frame);
}
帧计数++;
}
它查询捕获帧,并且仅当帧在最小帧和最大帧(两个整数)的范围内时才写入。代码工作得很好,但对于处理非常大的视频来说效率不够,因为它必须查询捕获帧,直到最小帧,但它不会写入它们。我想知道是否有办法可以让cvQueryFrame从min_frame开始,而不必一直到它。自从我移动后,当它到max_frame时,它已经停止了
frame_count <= max_frame
frame\u count您可以通过
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, min_frame);
当然,仅适用于视频,不适用于相机。读取的下一帧将是min\u frame
,并且从那里开始读取将正常进行(将读取min\u frame
之后的帧)如果您不重新设置帧位置,那么这是一个完美的匹配,因为您只需要在开始时调用它。您正在使用相机或视频吗?