久しぶりに、Visual Studioを起動しFormアプリでOpenCVを使うにはどうしたらよいのか調べて確認しました。
背景
WindowsアプリケーションでOpenCVを使ったアプリを作成する必要があり、どのようにすれば簡単かを調べてみました。
C#環境であればボタンなのでのGUIコントロールを使えるのでC#でOpenCVをつかえると比較的簡単にGUIアプリを作成できることがわかり、テンプレートとなるような空のアプリを作成しました。
プロジェクト作成方法
プロジェクトの作成方法は以下のようになります。
ファイル>新規作成>プロジェクト
Visual c#>Windowsデスクトップ>Windowsフォームアプリケーション(.NET Framework) を選択します。

プロジェクト>Nugetパッケージ管理
OpenCVSharp4 を選択してインストールします。

Nugetを使うと、いろいろな設定作業から解放されるのでアプリのロジックだけに集中できて本当に便利です。
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 OpenCV4Test2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} •
private void button1_Click(object sender, EventArgs e)
{
Mat img = new Mat(new OpenCvSharp.Size(800,600),MatType.CV_8UC3);
Cv2.ImShow(“hello”,img);
img.Dispose();
}
}
}
このコードを実行します。からの画像が表示されるはずです。実行結果は以下のようになりました。

その他
自分の環境では下のパッケージをインストールすると実行時にdllがないと言われ実行することができませんでした。

Nugetで検索するといろいろなパッケージがあって便利ですが、どれを選んでよいか迷うことが多々あります。エラーがないか試しながらやるしかないのでしょう。
感想
画像処理等、画像を扱うアプリをつくるときにコンソールアプリかUIを持ったアプリになるかによって見え方が大きく変わると感じています。
できれば、UI付きのアプリのほうが好きです。
今回、c#のフォームアプリからNugetでOpenCVのパッケージをインストールすることで簡単にUIアプリつくれることがわかりました。
今後はこれをテンプレートとして画像処理関連のアプリを作っていこうとおもいます。


コメント