HighGUI工具包不仅提供我们一个刚刚使用的一些简单函数,还包括一些图像与视频控制的算法,其中一个就是使用滚动条,滚动条可以使我们可以方便的控制视=视频从一帧跳转到另外一帧中去,我们可以使用cCreateTrackbar()来创建一个滚动条,并通过设置参数确定滚动条所属的窗口
#include<opencv2\opencv.hpp>
#include<highgui.h>
#include <string.h>
#include <iostream>
#include "cv.h"
using namespace cv;
using namespace std;
int g_slider_position = 0; //huatiao werizhi
CvCapture*g_capture = NULL;
//sider function
void onTrackbarslider(int pos)
{
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
}
int main(int argc, char** argv)
{
cvNamedWindow("example", CV_WINDOW_AUTOSIZE);
g_capture = cvCreateFileCapture("car.avi");
//定义祯数
int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
if (frames != 0)
{
cvCreateTrackbar("position", "example", &g_slider_position, frames, onTrackbarslider);
}
//显示视频
IplImage *frame;
while (1)
{
frame = cvQueryFrame(g_capture);
if (!frame) break;
cvShowImage("example", frame);
char c = cvWaitKey(33);
if (c == 27) break;
}
//释放内存
cvReleaseCapture(&g_capture);
cvDestroyWindow("example");
return 0;
}