使用opencvsharp在c# winform的pictureBox上播放視訊
阿新 • • 發佈:2019-01-09
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方法則是平穩增長,最後變成一條直線,我比較喜歡這樣,及時釋放。看看有沒有什麼方法繼續改進吧。