環境
・Visual Studio 2017
・OpenCvSharp3-AnyCPU
ソースコード一式
導入方法
NuGetパッケージマネージャー起動
OpenCvSharp3-AnyCPUインストール
ソースコード抜粋
注意:
動作検証のためApplication.DoEvents()
を使用しています。
アプリを作る場合は別スレッドで描画するなどしてください。
using OpenCvSharp;
using OpenCvSharp.Extensions; // Bitmap変換に必要
private void button1_Click(object sender, EventArgs e)
{
VideoCapture vcap = new VideoCapture(textBox1.Text);
while (vcap.IsOpened())
{
Mat mat = new Mat();
if (vcap.Read(mat))
{
if (pictureBox1.Image != null)
{
pictureBox1.Image.Dispose();//Memory release
}
if (mat.IsContinuous())
{
pictureBox1.Image = BitmapConverter.ToBitmap(mat);
}
else
{
break;
}
Application.DoEvents(); // 非推奨
}
else
{
break;
}
Thread.Sleep((int)(1000 / vcap.Fps));
mat.Dispose();//Memory release
}
vcap.Dispose();//Memory release
}
説明
- 動画ファイルを開いて、フレームをbitmap変換してPictureBoxに描画しています。
- 動画再生が終わると、最後のフレームで停止します。
- 一応、ある程度のメモリ使用量に達した時点でGCが働きますが、精神衛生上よろしくないので
.Dispose()
でメモリ解放しています。
参考URL