OpenCVはシンプルな画像表示用のウィンドウも用意されているので、簡単に画像処理を試したい場合には非常に良いのですが、少し凝ったウィンドウを作成しようとすると、やっぱり.NETからOpenCVを触りたくなります。
.NETの言語(VB.NET、C#、C++/CLI)からOpenCVを使う方法は、だいたい以下の通り
- .NETのラッパーライブラリを使う
- 自作でラッパーライブラリを作成する
- C++/CLIから直接使う
となりますが、実質的にはOpenCvSharpを使う事になると思います。
- OpenCVSharp
OpenCvSharpのインストール方法は、現在ではNuGetによりプロジェクトごとにインストールします。
OpenCvSharpのインストール方法
まず、インストールするC#プロジェクトを用意します。
新規でC#プロジェクトを作成する場合は、次のように行います。
Visual Studio を起動後、新しいプロジェクトの作成をクリックします。
次に Windowsフォームアプリケーション(.NET FRamework)を選択し、次へをクリックします。
プロジェクト名、場所を指定し、作成をクリックします。
これで、以下のようにフォームが表示されたらベースとなるC#プロジェクトが作成されています。
次に、このC#プロジェクトにNuGetでOpenCvSharpをインストールします。
メニューのプロジェクト→NuGetパッケージの管理をクリックします。
表示された画面で、 参照 を選択し、その下のテキストボックスに OpenCvSharp と入力すると、OpenCvSharpの一覧が表示されるので、この中から OpenCvSharp.Windows を選択します。
OpenCvSharp.Windows を選択すると、右側に インストール ボタンが表示されるので、これをクリックします。
しばらくすると、インストールが完了します。
OpenCvSharpがインストールされたか?確認するには、プロジェクトの参照の部分の表示を展開すると、OpenCvSharpの名前空間が表示されている事を確認します。
簡単にOpenCvSharpの動作を確認します。
ツールボックスの中から Button を選択し、フォーム上にドラッグ&ドロップします。
ボタンをダブルクリックし、C#コードを表示し、上の方に、
using OpenCvSharp;
と入力し、ボタンイベントの部分に以下のように記載します。
private void button1_Click(object sender, EventArgs e)
{
var img = new Mat(new OpenCvSharp.Size(256, 256), MatType.CV_8UC3, new Scalar(35, 123, 254));
Cv2.ImShow("Image", img);
}
参考までに、Formの全コードを示します。
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;
using OpenCvSharp;
namespace WindowsFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
var img = new Mat(new OpenCvSharp.Size(256, 256), MatType.CV_8UC3, new Scalar(35, 123, 254));
Cv2.ImShow("Image", img);
}
}
}
この状態で、▶開始 ボタンをクリックし、以下のように表示されれば OpenCvSharp のインストールは成功しています。
OpenCvSharpを使うポイント
2021年現在、OpenCVの情報はPythonであふれているので、OpenCvSharpの情報を探すのは難しくなってきています。
OpenCvSharpの情報を入手するには、少し古くなりましたが、作者であるSchimaさんのページを参照することをお勧めします。
リファレンスは英語になりますが、こちらです。
あとは、OpenCvSharpは基本的にOpenCVのC++版のラッパーライブラリであるため、OpenCVのC++の情報を検索し、OpenCvSharpでは、どうするのか?を推測するのもイイかと思います。
コメント
[…] C#(.NET)からOpenCVを使う方法、OpenCvSharpのインストール方法 […]