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

    创建一个程序读入和显示视频文件,并可以使用滑动条控制视频文件的播放。一个滑动条用来控制视频播放位置,以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
    ");
        }
        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;
    }
  • 相关阅读:
    从json中获取自己想要的属性
    对称加密解密
    springboot 读取resource目录下的文件
    安装nginx 配置了ssl 启动报错
    复利计算--4.0 单元测试之JAVA版-软件工程
    《构建之法》前三章读后感
    单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 WEB
    操作系统 实验一 命令解释程序的编写
    单利 复利计算器程序1.0 2.0 3.0 [ 合 ] 之 C语言
    统计实验数据 总结实验结果
  • 原文地址:https://www.cnblogs.com/chenyang920/p/5365175.html
Copyright © 2011-2022 走看看