#include <stdio.h>
#include <iostream>
#include <fstream>
#include "cv.h"
#include "highgui.h"
//滚动条播放视频
int g_slider_position = 0;
CvCapture* g_capture = NULL;
void onTrackbarSlide(int pos) {
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
//CV_CAP_PROP_POS_FRAMES以帧数来设置读入位置
//CV_CAP_PROP_POS_AVI_RATIO以视频长度比例来设置读入位置
pos
);
}
int main(int argc, char** argv) {
cvNamedWindow("Example", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture("沙画.mp4");
int frames = (int)cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
//获取总帧数
);
if (frames != 0) {
//有些编码方式帧数获取不到,只能直接播放视频,看不到滚动条
cvCreateTrackbar(
"Positon",
"Example",
&g_slider_position,
frames,
onTrackbarSlide
);
IplImage* frame;
while (1) {
frame = cvQueryFrame(g_capture);
if (!frame) break;
cvShowImage("Example", frame);
//停顿33ms,可以通过cvcapturefromcamera返回的cvcapture准确的确定帧率
char c = cvWaitKey(33);
if (c == 27) break;//ASCII码esc键
}
cvReleaseCapture(&g_capture);
cvDestroyWindow("Example");
return(0);
}
}
OpenCV学习之滚动条播放视频
最新推荐文章于 2020-09-17 17:14:12 发布