C#とOpenCVSharpで画像処理!(Visual Studio 2019)

C#とOpenCVSharpで画像処理!(Visual Studio 2019)

はじめに

WindowsアプリでOpenCVを利用した画像処理を行ってみましょう。
OpenCVはC++で利用できますが「難易度が高い!」という人でも、C#でOpenCVSharpというものが利用できます

今回使用する環境は以下です。

  • Windows10
  • Visual Studio 2019
  • C#.NET
  • OpenCVSharp

ソースコードについて

今回使用するソースコードは、githubに公開しております。

Visual Studio 2019インストール

以前、以下の記事にまとめました。参考ください。

Visual Studioダウンロードページを開き、インストールを行います。

C#プロジェクトの作成

Visual Studio 2019を起動します。
新しいプロジェクトを作成します。

検索ボックスに、「C#」と入力し、Windowsフォームアプリケーションを作成します。

プロジェクト名や保存場所は任意で入力します。

プロジェクトが作成されました。

OpenCVSharpインストール

OpenCVSharpを使用できるように準備します。
プロジェクト→NuGetパッケージの管理を開きます。

参照をクリックし、「opencvsharp」と入力します。
一覧から、「OpenCvSharp3-AnyCPU」を選択しインストールします。
バージョンは「4.0.0.20181129」でした。

変更のプレビューが表示されますがOKをクリックします。

インストールが完了しました。

基本

サンプル画像を用意しました。(各自ご用意ください)
https://www.pakutaso.com/20190344070post-19876.html

任意の場所に「img」フォルダを作りファイルを保存しました。

例:
D:\cs_source\img\neko.jpg

フォームにボタンを配置します。

usingディレクティブに以下を指定します。

ボタンのクリックイベントを以下のようにしました。
最低限のサンプルコードです。

リソースの開放のためusingステートメントを使用します。
画像パスは、保存したパスを指定しています。
ImShowを使用し、新しいウィンドウに画像を表示します。
第一引数はウィンドウ名を指定します。

それでは実行してみましょう。
フォームが表示されますので、ボタンをクリックします。

新しいウィンドウに画像が表示されました。

今回はこの基本操作をもとに、画像処理の実用例を以下にまとめました。
OpenCVの詳しいパラメータや仕様などは各自調べてください。

グレースケールに変換

ボタンを追加します。

実行してみると、グレースケールになりました。

画像ファイルの保存

加工した画像をファイルに保存する方法です。

画像の切り抜き

画像を切り抜き、ファイルに保存する方法です。

テンプレートマッチング

テンプレートマッチングを行います。
ある画像の中に、検索したい画像を探して赤枠をつけます。

ボタンを追加します。

探したいテンプレート画像も用意します。
猫ちゃんの顔にしました。

ソースコードは以下です。
テンプレートマッチングを行い、見つかった箇所に赤枠を表示しています。

見つかった箇所に赤枠が表示されます。

テンプレートマッチング 複数検索

先程の例ですと、1つのテンプレートを検索し最も近い場所に赤枠を表示しました。
複数の画像もマッチングし検索することができます。

試しに猫ちゃんの顔をコピーした画像を用意しました。
これで2箇所検索されるはずです。

ソースコードは以下です。

実行してみると2箇所赤枠が表示され、見つかりました。

顔抽出

写真の中の顔を認識してみたいと思います。
サンプル画像を用意しました。(各自ご用意ください)
https://www.pakutaso.com/20140912244post-4510.html

ボタンを追加します。

ソースコードは以下です。

haarcascade_frontalface_default.xmlは以下のgithubからダウンロードしました。
任意の場所に配置してパスを指定します。

顔を認識することができました。

さいごに

基本的な操作例から、実用的な実装例をまとめました。
OpenCVは非常に強力なライブラリですので、沢山の画像処理を行うことができます。
色々と試してみてください😐

お気軽にフォローください!

シンプルで高機能なクリップボード履歴フリーソフト「Clibor」

シンプルで高機能なクリップボード履歴ソフトです。
Cliborはフリーソフトです。

普段よく文字を入力する方や、ブラウザに決まったキーワードを張り付ける方など、テキストの入力がとても便利になりますので是非ご利用ください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)