您的位置:首页 > 运维架构

OpenCV学习之滚动条播放视频

2017-07-30 13:33 453 查看
#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);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息