#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"

int pos=0; //滑块的位置,当滑块被挖掘时,Opencv自动将当前位置所代表的值传给指针指向的整数
int frame_count=0; //视频播放到的帧数
CvCapture *capture=NULL;

void on_change(int currentpos)
{
cvSetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES,currentpos);
frame_count=currentpos;
}

int main(int argc, char* argv[])
{
cvNamedWindow("视频播放");
IplImage *src;
capture=cvCreateFileCapture("E:\\大三下\\考研\\2016考研词汇5500【恋练有词 朱伟】\\04 低频词汇\\Unit24——26\\Unit 24 初始词汇.avi");
int frame=(int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT); //获取视频的总帧数
if(frame>0)
{
cvCreateTrackbar("进度","视频播放",&pos,frame/1.4,on_change); //创建滚动条
}
while(1)
{
src=cvQueryFrame(capture);
if(!src) break;
cvShowImage("视频播放",src);
char c=cvWaitKey(1);
if(c==27)
break;
cvSetTrackbarPos("进度","视频播放",frame_count);
frame_count++;
}
return 0;
}

关键函数介绍:

1、int cvSetCaptureProperty( CvCapture* capture, int property_id); 获取视频的属性,包括视频的总帧数、帧宽度、帧索引等等,具体的属性通过property_id来选择

property_id可以使下面的值之一:

CV_CAP_PROP_POS_MSEC - 从文件开始的位置,单位为毫秒   

CV_CAP_PROP_POS_FRAMES - 单位为帧数的位置(只对视频文件有效)   

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_FOURCC - 表示codec的四个字符(只对摄像头有效)value 属性的值。   

注意:这个函数有个bug,有时候函数cvGetCaptureProperty在cvQueryFrame被调用一次后,再调用cvGetCaptureProperty才会返回正确的数值。这是一个bug,建议在调用此函数前先调用cvQueryFram

2、int cvCreateTrackbar( const char* trackbar_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change ); 创建滚动条,并将它添      加到指定的窗口

  trackbar_name 被创建的滚动条名的字。

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

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

  count 滑块位置的最大值。最小值一直是0。

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

  函数cvCreateTrackbar用指定的名字和范围来创建trackbar(滑块或者范围控制),指定与trackbar位置同步的变量,并且指定当trackbar位置被改变的时候调用的回调函       数。被创建的trackbar默认显示在指定窗口的顶端,可以通过函数cvGetTrackbarPos来获取trackbar显示的位置信息,以及通过函数cvSetTrackbarPos来重新设置trackbar      的显示位置。

3、cvSetCaptureProperty(CvCapture *capture,int property_id,double currentpos);   设置capture所指向的视频文件的属性,当property_id的值等于     CV_CAP_PROP_POS_FRAMES 时,表示从位置currentpos开始播放视频

4、cvSetTrackbarPos("进度","视频播放",frame_count);  设置当前滑块的位置为frame_count

Opencv创建有滚动条的视频的更多相关文章

  1. 基于OpenCv和swing的图片/视频展示Java实现

    基于OpenCv和swing实现图片/视频的展示 图片的展示 swing展示图片,多为操作BufferedImage,这里要关注的核心是将Mat转为BufferedImage. 代码如下: publi ...

  2. 基于opencv在摄像头ubuntu根据视频获取

     基于opencv在摄像头ubuntu根据视频获取 1  工具 原料 平台 :UBUNTU12.04 安装库  Opencv-2.3 2  安装编译执行步骤 安装编译opencv-2.3  參考h ...

  3. python opencv 按一定间隔截取视频帧

    前言关于opencvOpenCV 是 Intel 开源计算机视觉库 (Computer Version) .它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法. ...

  4. OpenCV创建轨迹条,图片像素的访问

    .OpenCV创建进度条以及图像对比度,亮度调整 1.创建轨迹条createTrackbar() 函数原型C++: intcreateTrackbar(conststring& trackba ...

  5. OpenCV学习 4:摄像头视频读写与边缘检测

    原创文章,欢迎转载,转载请注明出处 想实现人脸识别,车辆识别,车牌识别.一般我们可不是读硬盘里面的视频文件的,都是直接从摄像头读取视频流然后直接识别的.所以读取摄像头的视频流这是基础...OpenCV ...

  6. python之OpenCv(五)---抓取摄像头视频图像

    OpenCV 可以通过 头videoCapture()方法打开摄像 摄像头变量 = cv2.VideoCapture(n)   n为整数,内置摄像头为0,若有其他摄像头则依次为1,2,3,4,... ...

  7. OpenCV学习:播放avi视频文件

    #if 0 //播放avi视频文件(IplImage) #include <opencv2/opencv.hpp> using namespace std; #pragma comment ...

  8. Opencv笔记(三)——视频的获取及保存

    一.利用摄像头获取视频 我们经常需要使用摄像头捕获实时图像.OpenCV 为这中应用提供了一个非常简单的接口.让我们使用摄像头来捕获一段视频,并把它转换成灰度视频显示出来.了获取视频,你应该创建一个 ...

  9. 【小工具系列】Python + OpenCV 图片序列转换成视频

    图片序列转换成视频 最近一直在找一个工具,能够将一堆图片转化成视频.网上找了一些小软件,还有 win10 的照片自带的视频制作功能,都不是很满意. 又不想下载那些专业的视频剪辑软件大材小用. 然后找到 ...

随机推荐

  1. Struts2拦截器初涉

    Struts2拦截器初涉 正在练习struts,本例是从一个pdf上摘抄的例子,那本pdf都不知道叫什么名字,不过感觉很适合初学者. 在这里要实现一个简单的拦截器"GreetingInter ...

  2. linux命令:mkdir命令

    命令参数: -m, --mode=模式,设定权限<模式> (类似 chmod),而不是 rwxrwxrwx 减 umask -p, --parents  可以是一个路径名称.此时若路径中的 ...

  3. 《BI项目笔记》数据源视图设置

    目的数据源视图是物理源数据库和分析维度与多维数据集之间的逻辑数据模型.在创建数据源视图时,需要在源数据库中指定包含创建维度和多维数据集所需要的数据表格和视图.BIDS与数据库连接,读取表格和视图定义, ...

  4. centos设置服务开机启动

    Linux CentOS设置服务开机启动的方法 by 天涯 · 2013/07/26 CentOS设置服务开机启动的两种方法 1.利用 chkconfig 来配置启动级别 在CentOS或者RedHa ...

  5. docker部署tomcat

    一.环境简介 宿主机版本:ubuntu-14.04.3-server-amd64.iso JDK版本:jdk-7u76-linux-x64.tar.gz TOMCAT版本:apache-tomcat- ...

  6. jQuery Easing 使用方法及其图解

    jQuery Easing 使用方法及其图解,非常详尽:http://blog.sina.com.cn/s/blog_70a3539f0102v8az.html

  7. C语言语法之关键字

    注:该内容整理自以下链接. http://www.cnblogs.com/yezhenhan/archive/2011/10/16/2214420.html 由ANSI标准定义的C语言关键字共32个: ...

  8. java complier compliance level问题引发的思考

    http://blog.csdn.net/shan9liang/article/details/17266519 ******************************************* ...

  9. FACADE

    1 意图:为子系统中的一组接口提供一个一直的界面,Facade模式定义了一个高层接口.这个接口使得这一子系统更加容易使用, 2 动机,便于不需要更多功能的人通过Facade 简化使用 3 适用性: . ...

  10. C++ template的一些高级用法(元编码,可变参数,仿函数,using使用方法,. C++ 智能指针)

    1 .  通用函数可变参数模板 对于有些时候,我们无法确切的知道,函数的参数个数时,而又不想过多的使用所谓的函数重载,那么就可以效仿下面的例子: #include<iostream> #i ...