创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放。一个滑动条用来控制视频播放位置,以10为步长跳进。另一个滑动条用来控制停止/播放

/*
创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放。
一个滑动条用来控制视频播放位置,以10为步长跳进。另一个滑动条用来控制
停止/播放
*/
#include <cv.h>
#include <highgui.h>
int g_slider_position = 0;
CvCapture* g_capture = NULL;
int index = 0;
bool flag = true;
int g_slider_position1 = 0;
void onTrackbarSlider(int pos)
{
    cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos);
    //获取视频的属性 以帧数获取
    index = pos;
}
void play_pause(int pos)
{
    if (pos == 0)
    {
        flag = true;
    }
    else
    {
        flag = false;
    }
}
int main()
{
    cvNamedWindow("main", CV_WINDOW_AUTOSIZE);
    g_capture = cvCreateFileCapture("1.avi");
    int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
    //获取视频的总帧数 视频文件中帧的总数
    if (frames!=0)
    {
        cvCreateTrackbar("position", "main", &g_slider_position, frames, onTrackbarSlider);
        //设置滑动条的位置 并且名为position 在窗口main中显示 滑动条的滑动位置 滑动条的最大值 每次滑动条改变时的回调函数
        cvCreateTrackbar("position1", "main", &g_slider_position1, 1, play_pause);

    }
    else
    {
        printf("read video failed\n");
    }
    IplImage *frame;
    cvSetTrackbarPos("position", "main", 1);
    //设置滑动条的值
    cvSetTrackbarPos("position1", "main", 0);
    while (1)
    {
        frame = cvQueryFrame(g_capture);
        //按帧逐个读取视频文件的内容
        char c = cvWaitKey(10);
        if (c == 27) break;
        cvShowImage("main", frame);
        cvSetTrackbarPos("position", "main", index);
        //设置当前滑动条的位置
        if (flag)
        {
            index = index + 10;
            cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, index);
            //获取视频的属性
        }
        else
        {
            cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, index);
            //获取视频的是属性
        }
    }
    cvReleaseCapture(&g_capture);
    cvDestroyWindow("main");
    return 0;
}
时间: 2024-08-01 06:31:10

创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放。一个滑动条用来控制视频播放位置,以10为步长跳进。另一个滑动条用来控制停止/播放的相关文章

sql server迁移数据(文件组之间的互相迁移与 文件组内文件的互相迁移)

转自:https://www.cnblogs.com/lyhabc/p/3504380.html?utm_source=tuicool SQLSERVER将数据移到另一个文件组之后清空文件组并删除文件组 总结: (1)如果是一个文件组内只有一个文件 ~~把所有在该文件组内的表删除聚集索引,然后新建聚集索引至新的文件组 (2)如果是一个文件组内多个文件 [1]把某个文件清空转移到其他文件:使用DBCC SHRINKFILE(要移动数据的数据文件逻辑名称,EMPTYFILE) [2]把该文件组内所有

winform 加载窗体时弹出另一个窗体并显示进度条的源码

winform 加载窗体时弹出另一个窗体并显示进度条的源码 //frmA: 源窗体 //------------------------------------------ //引用 using System.Threading; BackgroundWorker worker; public frmA() { InitializeComponent(); worker = new BackgroundWorker(); worker.DoWork += new DoWorkEventHandl

使用WebGL实现一个Viewer来显示STL文件

关键字:WebGL,STL,ThreeJS,Chrome,Viewer,Python3.4, HTML5,Canvas. OS:Windows 10. 本文介绍如何使用ThreeJS来实现一个WebGL的Viewer,用来浏览STL文件. STL 文件是在计算机图形应用系统中,用于表示三角形网格的一种文件格式. 它的文件格式非常简单, 应用很广泛. STL是最多快速原型系统所应用的标准文件类型.STL是用三角网格来表现3D CAD模型. 1.新建一个STL.html文件如下: <!DOCTYPE

php页面添加背景音乐 控制停止/播放

php页面添加背景音乐 控制停止/播放 <!DOCTYPE html> <html> <head lang="zh-cn"> <meta charset="UTF-8"> <title></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-sca

在另一个文本框显示input file选择的文件名字

javascript 获取文件域 (type=file) 的完整路径一直是很麻烦的问题,问题主要出在一些浏览器基于安全性考虑而不能正常获取到文件域中选中图片的决对路径,尤其一些基于webkit的浏览器比如 Chrome, Safire等浏览器,下面是一个可以兼容 IE 6 , 7, 8 和 firefox 的获取 input file 完整路径的方法,该方法不支持 Chrome 和 Safire,要支持这些浏览器可能要使用到 Flash ,对程序员来说比较麻烦. HTML页面:        <

手机影音第九天,控制视频全屏播放与退出全屏播放,音量调节按钮来控制视频音量与静音的实现

代码以托管到码云,有兴趣的小伙伴可以下载看看 https://git.oschina.net/joy_yuan/MobilePlayer 一.视频全屏播放与退出全屏 系统默认的videoview类,没有调整大小的方法,因此需要自定义一个类,继承videoview,然后重写里面的三个构造方法,再自定义一个调整视频播放页面大小的方法. 1.布局文件 同时,在视频播放的布局文件中,videoview布局要引用上面自定义的类. <?xml version="1.0" encoding=&

Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画

Cocos2d-x 3.8.1+Cocos Studio 2.3.2捉虫记之控制场景文件中的骨骼动画 引子 这段时间一直努力在把早期版本的拇指接龙游戏(Cocos2d-x 2.2.3+CocoStudio 1.4.0.1)升级到当前相对稳定的高大上环境--Cocos2d-x 3.8.1+Cocos Studio 2.3.2.行程中遇到不少麻烦,时间不知不觉像流水一样悄然逝去(这正是我时不时酸酸地想起"程序猿"三字的主要原因).想之再三,还是努力记录下来,一来为自己可能逝去的记忆,二来为

利用VS C# 实现串口控制视频的播放 use VLC

开发环境:VS2013, C#, VLC播放器 实现的功能: 1.利用串口通信来控制视频的播放, 2.接收到"1"时播放第一个视频,若10s内没有接收到"1",自动播放第二个视频,期间忽略接受到的0: 3.若正在播放第二个视频,接收到"1",立马播放视频1, 整个功能的实现主要就用到了2个控件和1个VLC类,控件SerialPort和timer&&类VlcPlayer.cs 重要提示:项目必须使用.NET 2.0,并且电脑需要安装

Linux下如何查看一个文件是否拥有软链接或硬链接文件?

问题1:我创建了一个硬链接文件,但是我不知道放在那里了,请问怎么办? 思路: 查找文件可以利用find命令. 硬链接的特性,不会跨文件系统,所以源文件在哪个文件系统中,就在那里找 硬链接文件和源文件具有相同的inode号,可以利用find的-inum参数和-samefile参数来查找. -inum参数表示按照inode号去查找,首先要查看文件的inode号 -samefile参数表示查找和某个文件相同的inode的文件,不用查看文件的inode号 [[email protected] oldbo