Cen*_*noc 22 video opencv seek
我一直在尝试使用C++中的OpenCV来寻找/实现搜索和回放功能(对于视频(.avi)),但我找不到一种方法,除了通过整个文件一次并保存每个图像.还有其他方法吗?
任何帮助将非常感激; 提前谢谢!
Adi*_*Adi 42
使用cvSetCaptureProperty()可以循环遍历帧,可以是几毫秒,也可以是序数帧号.
int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
Run Code Online (Sandbox Code Playgroud)
property_id是您需要使用的属性.它可以是以下之一:
前两个是您感兴趣的.
编辑:更多信息:)
您可以通过使用各种帧索引重复调用所提到的函数来循环遍历帧.
cvSetCaptureProperty(capture, CV_CAP_PROP_POS_FRAMES, frameIndex);
Run Code Online (Sandbox Code Playgroud)
例:
IplImage* frame;
CvCapture* capture = cvCreateFileCapture("test.avi");
/* iterate through first 10 frames */
for (int i = 0; i < 10; i++)
{
/* set pointer to frame index i */
cvSetCaptureProperty(capture, CV_CAP_POS_FRAMES, i);
/* capture the frame and do sth with it */
frame = cvQueryFrame(capture);
}
Run Code Online (Sandbox Code Playgroud)
每次用户单击按钮以转发/回放视频时,您都可以执行类似的代码.
C++方法(OpenCV 2和更高版本)将使用此方法,而不是使用相同的property_id和value.
bool VideoCapture::set(int property_id, double value)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
25291 次 |
最近记录: |