有没有办法为cvQueryFrame或cvGrabFrame设置起始帧?

问题描述

| 使用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ѭ之后的帧将被读取)。因此非常适合,因为您只需要在开始时就称呼它即可。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...