opencv之视频播放控制

首先介绍几个函数:

函数原型: double cvGetCaptureProperty(CvCapture* capture, int property_id);

第一个参数:表示哪个视频。

第二个参数:不同的参数表示不同的意义。

CV_CAP_PROP_POS_MSEC影片目前位置,为毫秒数或视频获取时间戳

CV_CAP_PROP_POS_FRAMES将被下一步解压/获取的帧索引,以0为起点

CV_CAP_PROP_POS_AVI_RATIO视频文件的相对位置(0-影片的开始,1-影片的结尾)

CV_CAP_PROP_FRAME_WIDTH视频流中的帧宽度

CV_CAP_PROP_FRAME_HEIGHT视频流中的帧高度

CV_CAP_PROP_FPS帧率

CV_CAP_PROP_FRAME_COUNT视频文件中帧的总数

CV_CAP_PROP_FOURCC 表示codec的四个字符

创建滚动条:

该函数为opencv库函数,创建trackbar并将它添加到指定的窗口。

函数原型:

int cvCreateTrackbar(const  char* trackbar_name, const  char* window_name, int* value, int count, CvTrackbarCallback on_change);

参数说明:

 trackbar_name被创建的trackbar名字。

window_name窗口名字,这个窗口将为被创建的trackbar的父对象。

value 整数指针,它的值反映滑块的位置,这个变量指定创建时的滑块位置。

count滑块位置的最大值,最小值为0.

on_change每次滑块位置被改变的时候,被调用函数的指针,这个函数应该被声明为void Foo(int),如果没有回调函数,这个值可以设置为NULL.


函数cvCreateTrackbar用指定的名字和范围来创建trackbar(滑块或范围控制),指定与trackbar位置同步的变量,并且指定当trackbar位置被改变的时候调用的回调函数。

被创建的trackbar默认显示在指定窗口的顶端,可以通过函数cvGetTrackbarPos来获取trackbar显示的位置信息,以及通过函数cvSetTrackbarPos来重新设置trackbar

的显示位置。



附源代码:

#include <highgui.h>
#include <cv.h>


int g_slider_position = 0;
CvCapture* g_capture = NULL;
int frame_count = 0;


void onTrackbarSlide(int pos)
{
printf("g_slider_position is %d\n", g_slider_position);
printf("g_slider_position is %d\n", pos);
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
frame_count = pos;
}
int main()
{
cvNamedWindow("avi");
//分配了一个视频帧大小的内存空间
g_capture = cvCreateFileCapture("E:\\visionpro初级教程\\第一课 Visionpro软件介绍.avi");


int frames = (int)cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
);


if (frames != 0)
{
cvCreateTrackbar(
"position",
"avi",
&g_slider_position,
frames,
onTrackbarSlide
);
}
IplImage* frame;


while (true)
{
//将下一帧视频文件载入内存,并返回对应当前帧的指针
frame = cvQueryFrame(g_capture);


if (!frame)
break;
cvShowImage("avi", frame);


//控制帧率
char c = cvWaitKey(33);


if (c == 27)
break;


cvSetTrackbarPos("position", "avi", frame_count);
frame_count++;
}
//释放的是文件句柄
cvReleaseCapture(&g_capture);
cvDestroyWindow("avi");


return 0;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值