1. 程式人生 > >使用opencvsharp在c# winform的pictureBox上播放視訊

使用opencvsharp在c# winform的pictureBox上播放視訊

        using OpenCvSharp;
        using OpenCvSharp.Extensions;

        
        static VideoCapture capture=new VideoCapture(@"E:\視訊素材\西門子SGT-750燃氣輪機.mp4");
        static bool isopen = false;
        private void pictureBox5_Paint(object sender, PaintEventArgs e)
        {
            if (isopen)
            {
                Mat image = new Mat();
                capture.Read(image);
                if (image.Empty())
                {
                    isopen = !isopen;
                }
                else
                {
                    int sleepTime = (int)Math.Round(1000 / capture.Fps);
                    pictureBox5.BackgroundImage = image.ToBitmap();
                    Cv2.WaitKey(sleepTime);
                    image.Release();//釋放,別等到gc來回收,太佔記憶體
                }
            }
        }
        private void button5_Click_1(object sender, EventArgs e)
        {
            isopen = !isopen;
            pictureBox5.Refresh();//馬上重新整理
        }

 播放起來很流暢,沒有卡頓。就是佔用記憶體太多,gc前後記憶體佔用差的很多,說明優化的空間還很大,很多記憶體沒有及時的去釋放。而使用opencvshap 的window類的showimage方法則是平穩增長,最後變成一條直線,我比較喜歡這樣,及時釋放。看看有沒有什麼方法繼續改進吧。