【無料で学べる】0円スクール(ゼロスク)とは?評判や口コミ詳しくはこちら

【C#】OpenCvSharpでWebカメラの映像をキャプチャする方法

今回は、C#で画像処理を行うためのライブラリ「OpenCvSharp」を使用し、Webカメラを起動させ、キャプチャした画像を表示させるやり方を試したいと思います。

コードは非常に短くシンプルです。

「ココナラ」でC#、OpenCvSharpを使った画像処理アプリの作成を行っています。
もし、作成依頼やお困りごとがあればお気軽にご相談ください!

目次

動作環境

Windows10

VisualStudio2019

OpenCvSharp4

ロジクール B525(Webカメラ) or C615n

B525

C615n

準備

プロジェクト作成

初心者でも扱いやすい、WindowsFormで作っていきます。

WindowsFormを選択し、ファイル名を入力します。今回はImageProcessingとしています。

OpenCvSharpのインストール

こちらは、VisualStudioのNugetにてインストールしていきます。

①Nugetパッケージの管理をクリック

②OpenCvSharpと入力し、OpenCvSharp4.Windowsをクリック、インストールボタンをクリック。

こちらのバージョンを選択すれば、必要な関連ファイルを全てインストールしてくれます。

プロジェクトの参照下を確認するとOpenCvSharpのファイルが追加されていれば、成功です。

前準備は以上となります。

ソースコード

では、ウェブカメラを接続し、キャプチャをするところのコードを載せていきます。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//以下、OpenCvsharpの使用とMatの変換用として追加
using OpenCvSharp;
using OpenCvSharp.Extensions;

namespace ImageProcessing
{
    public partial class Form1 : Form
    {

        private Mat _flame;

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //PictureBoxのサイズに合わせて表示
            pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
            pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
        }


        private void button1_Click(object sender, EventArgs e)
        {
            //VideoCapture作成
            using (var capture = new VideoCapture())
            {
                //カメラの起動 
                capture.Open(0);

                if (!capture.IsOpened())
                {
                    throw new Exception("capture initialization failed");
                }

                //画像取得用のMatを作成
                _flame = new Mat();

                while (true)
                {
                    try
                    {
                        capture.Read(_flame);
                        if (_flame.Empty())
                        {
                            break;
                        }

                        if (_flame.Size().Width > 0)
                        {
                            //PictureBoxに表示 MatをBitMapに変換
                            pictureBox1.Image = BitmapConverter.ToBitmap(_flame);
                        }

                        int key = Cv2.WaitKey();

                        if (this.IsDisposed)
                        {
                            break;
                        }
                    }

                    catch (Exception)
                    {
                        break;
                    }
                }

            }
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (_flame == null)
            {
                return;
            }
            //PictureBoxに表示 MatをBitMapに変換
            pictureBox2.Image = BitmapConverter.ToBitmap(_flame);
        }
    }
}

動作説明

カメラ起動を押すと、Webカメラが起動し、ビデオ画面に表示がされる。

キャプチャボタンを押すと、押した瞬間の映像がキャプチャ画面に表示される。

以上、簡単なコードですが、C#でWebカメラを起動し、キャプチャを取るまでが完成しました。

とても簡単なのでぜひ、トライしてみてください!

C#で画像処理を学ぶためのおススメの書籍

C#でOpenCvを扱う方法などを詳しく解説してくれています。

C#で画像処理を解説してくれている本がほとんどない中、こちらの書籍はいろいろなメソッドの使い方等を事例を交えて解説してくれているため、非常に参考になります。

私はこちらの書籍を参考に画像処理を実装しました。

是非参考にしてみてください。

C#の基本が学習したいという方におススメのスクール:侍エンジニア塾のエキスパートコース

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
目次
閉じる