码迷,mamicode.com
首页 > 其他好文 > 详细

使用EmguCv播放指定视频

时间:2015-08-28 17:41:25      阅读:547      评论:0      收藏:0      [点我收藏+]

标签:emgucv

用Capture来加载一个视频。
用GetCaptureProperty函数可以获取这个视频的各种属性。
然后用Application.Idle来连续的显示视频中的帧(显示出一帧了,程序进入空闲,就继续加载下一帧)
由于视频中的帧太多,.net的垃圾回收机制赶不上,就使用GC.Collect();来强制回收垃圾,可以把程序的内存占用从700MB降到100MB左右

public partial class Form1 : Form
    {
        Capture cap;
        int fps;
        public Form1()
        {
            InitializeComponent();
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "MP4文件|*.mp4|AVI文件|*.avi|RMVB文件|*.rmvb|WMV文件|*.wmv|MKV文件|*.mkv|所有文件|*.*";

            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                Application.Idle += Application_Idle;
                cap = new Capture(openFileDialog.FileName);
                fps =(int) cap.GetCaptureProperty(CapProp.Fps);
            }


        }

        private void Application_Idle(object sender, EventArgs e)
        {
            Mat a = cap.QueryFrame();
            if (a != null)
            {
                System.Threading.Thread.Sleep((int)(1000.0 / fps - 5));
                imageBox1.Image = a;

                GC.Collect();
            }

        }

    }

效果图:
技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用EmguCv播放指定视频

标签:emgucv

原文地址:http://blog.csdn.net/qq_22033759/article/details/48054133

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!