SKProgramLab

Let's Enjoy Programming! ~画像処理/IoT/機械学習など~

C#/VB.NETで画像処理①<フォームアプリケーションの作成>

こんにちは、SKです。
f:id:SKProgramLab:20200310203357p:plain:w100

C#/VB.NETで画像処理シリーズの第1弾。
まずはフォームアプリケーションを作成します。

OpenCVSharpを用いた画像処理アプリのベースを準備していきます。
OpenCVSharpについて知りたい方は、下記を参照してください。
skprogramlab.hatenablog.com

動画手順

youtu.be

Visual Studioプロジェクトの作成

新しいプロジェクトの作成。 f:id:SKProgramLab:20200310204604p:plain

C#を選び、Windows フォームアプリケーション を選択します。 f:id:SKProgramLab:20200310204715p:plain

プロジェクト名や保存場所を選択。フレームワーク.NET Framework 4.8を選択します。 f:id:SKProgramLab:20200310204817p:plain

フォームアプリケーションが作成されます。 f:id:SKProgramLab:20200310204919p:plain

②OpenCVSharpの参照設定

OpenCVSharpのDLLをダウンロードし、プロジェクトから参照できるよう設定していきます。

※NuGetというパッケージ管理機能を使ってインストールすることも可能ですが、通常は不要なDLLも含めすべて入ってしまいミニマム構成ではなくなってしまうのが個人的には好きではないので、公式HPからダウンロードし参照設定を行います。

GithHubのリリースページから最新Ver.「OpenCvSharp-4.2.0-20200208.zip」をダウンロードし、好きな場所に解凍します。
(2020/3/10現在の最新Ver.は4.2.0) f:id:SKProgramLab:20200310213025p:plain

このような構成になっています。 f:id:SKProgramLab:20200310210101p:plain

Visual Studioのソリューションエクスプローラー→"参照"で右クリック→参照の追加を選択。
f:id:SKProgramLab:20200310210135p:plain

<OpenCVSharpフォルダ>\ManagedLib\net48フォルダ内の"OpenCVSharp.dll""OpenCVSharp.Extensions.dll"を選択し、追加します。 f:id:SKProgramLab:20200310210241p:plain

参照リストに追加されたことを確認します。 f:id:SKProgramLab:20200310210642p:plain

次に、ソリューションエクスプローラーのプロジェクト名で右クリック→追加→既存の項目を選択。 f:id:SKProgramLab:20200310210820p:plain

<OpenCVSharpフォルダ>\NativeLib\win\x86フォルダ内の"OpenCvSharpExtern.dll"を選択し、追加します。 f:id:SKProgramLab:20200310210840p:plain

ソリューションエクスプローラー内のOpenCvSharpExtern.dllを選択し、プロパティウィンドウの"出力ディレクトリにコピー""新しい場合はコピーする"にします。 ※こうすることで、ビルド時にDLLファイルが実行フォルダに作成されます。
f:id:SKProgramLab:20200310211115p:plain

③動作確認

サンプルコードを書き、OpenCVSharpのテストを行います。
デフォルトのForm1のデザイナー上でダブルクリックし、Loadイベントを作成します。 f:id:SKProgramLab:20200310212029p:plain

Loadイベント内に、下記のサンプルコードを記述します。

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 Form1_Load(object sender, EventArgs e)
        {
            Mat img = new Mat(500, 500, MatType.CV_8UC3, Scalar.Blue);
            Cv2.ImShow("img", img);
            Cv2.WaitKey(1);
        }
    }
}


VB.NETだとこんな感じです。

Imports OpenCvSharp

Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim img As New Mat(500, 500, MatType.CV_8UC3, Scalar.Blue)
        Cv2.ImShow("img", img)
        Cv2.WaitKey(1)
    End Sub

End Class

C#
f:id:SKProgramLab:20200310212325p:plain

VB.NET
f:id:SKProgramLab:20200310224229p:plain

青い画面が表示されたら成功です。 f:id:SKProgramLab:20200310212620p:plain

これで準備完了!
次回から具体的な内容に入っていきます。