10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C#での動画再生(OpenCvSharp使用)

Last updated at Posted at 2018-10-28

環境

・Visual Studio 2017
・OpenCvSharp3-AnyCPU

ソースコード一式

導入方法

NuGetパッケージマネージャー起動

  1. Visual Studioで新規にプロジェクトを作成する。(今回はMovieOpenCvSharpとした)
  2. ツール>NuGetパッケージマネージャー>ソリューションのNuGetパッケージの管理
    MovieOpenCvSharp - Microsoft Visual Studio 2018-10-28 08.41.29.png

OpenCvSharp3-AnyCPUインストール

  1. 参照>検索欄に"opencv"と入力
  2. OpenCvSharp3-AnyCPUを選択
  3. インストール対象プロジェクトにMovieOpenCvSharpをチェック
  4. インストール
    MovieOpenCvSharp - Microsoft Visual Studio 2018-10-28 08.47.24.png

ソースコード抜粋

注意:
 動作検証のため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

10
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?