#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. [linux] shellshock

    1> Test if the system is vulnerable env X="() { :;} ; echo vulnerable" /bin/sh -c " ...

  2. K-邻近算法

    K-邻近算法 采用测量不同特征值之间的距离来进行分类 Ad:精度高,对异常值不敏感,无数据输入假定 Na:计算复杂度高,空间复杂度高 KNN原理 存在样本集,每个数据都存在标签,输入无标签的新数据后, ...

  3. ubuntu如何卸载apt-get install安装的软件

    1.sudo apt-get remove xxxxx  sudo apt-get autoremove2.对于用命令sudo aptitude install xxx安装的软件可以用sudo apt ...

  4. CSS样式使用

    <html> <head> <style type = "text/css">                          .h{    ...

  5. 解决安装vc2005运行库时提示Command line option syntax error.Type Command/?for Help

    安装vc2005运行库时提示 这是因为它要自解压到用户的临时文件夹下,如果用户名中带中文,就会报错. 简单的解决方法是,手动解压之,再安装 当然,你也可以修改用户名或者再新建个用户.

  6. C 风格字符串和strcpy方法的实现

    C语言是面向过程的,所以它并没有所谓封装好的功能强大的string.但是麻雀虽小五脏俱全.在C中,我们一般用 const char* 类型来定义一个字面型字符串. 首先我们了解下C中的基本指针.指针是 ...

  7. three.js

    webgl,three.js交流的论坛,欢迎到里面提问问题 www.webglchina.cn

  8. Java 并发和多线程(一) Java并发性和多线程介绍[转]

    作者:Jakob Jenkov 译者:Simon-SZ  校对:方腾飞 http://tutorials.jenkov.com/java-concurrency/index.html 在过去单CPU时 ...

  9. Topcoder SRM584 DIV 2 500

    #include <set> #include <iostream> #include <string> #include <vector> using ...

  10. 测试nfs和cifs

    losetup /dev/loop1 file1.img losetup /dev/loop2 file2.img losetup /dev/loop3 file3.img mkfs -t ext4 ...