#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. Java:描述反射机制的作用?举几个反射的应用?

    比较全的解释了:JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法:这种动态获取的信息以及动态调用对象的方 ...

  2. eventloop & actor模式 & Java线程模型演进 & Netty线程模型 总结

    eventloop的基本概念可以参考:http://www.ruanyifeng.com/blog/2013/10/event_loop.html Eventloop指的是独立于主线程的一条线程,专门 ...

  3. STM32学习笔记(九) 外部中断,待机模式和事件唤醒

    学会知识只需要不段的积累和提高,但是如何将知识系统的讲解出来就需要深入的认知和系统的了解.外部中断和事件学习难度并不高,不过涉及到STM32的电源控制部分,还是值得认真了解的,在本文中我将以实际代码为 ...

  4. django中“url映射规则”和“服务端响应顺序”

    1.django搜索路径 使用 import 语句时,Python 所查找的系统目录清单.      查看方式:         import sys        print sys.path   ...

  5. Linux 下安装pip

    安装pip 使用脚本安装和升级pip 要安装或升级pip,需要下载 get-pip.py. 地址:https://bootstrap.pypa.io/get-pip.py 然后运行以下命令 (需要管理 ...

  6. 用OPencv配置vs2010

    第一次作业,图像的识别存储和显示 此次选用的是Microsoft Visual Studio 2010软件,在配置和opencv的时候,要选好版本苟泽造成不兼容,因此我选用的为opencv 2.4.1 ...

  7. 转Global.asax文件

    Global.asax 文件是什么   Global.asax 文件,有时候叫做 ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法.你可以使用这个文件实现应用程序 ...

  8. Windows Store App 过渡动画

    Windows Store App 过渡动画     在开发Windows应用商店应用程序时,如果希望界面元素进入或者离开屏幕时显得自然和流畅,可以为其添加过渡动画.过渡动画能够及时地提示用户屏幕所发 ...

  9. java 代理的三种实现方式

    Java 代理模式有如下几种实现方式: 1.静态代理. 2.JDK动态代理. 3.CGLIB动态代理. 示例,有一个打招呼的接口.分别有两个实现,说hello,和握手.代码如下. 接口: public ...

  10. Servlet实现文件,图片等的下载 含代码

    实现文件的下载源代码如下: package com.fxl.servlet; import java.io.FileInputStream;import java.io.IOException;imp ...