Visual Basic でOpenCV① - コンソールプログラム

Visual BasicOpenCVを使う最初の入門プログラムを紹介します。まず、コンソールプログラムでOpenVを利用します。

コンソールプロジェクトの生成

Visual Studio 2022 Community を起動し、[ファイル]→[新規作成]→[プロジェクト]を選びます。

起動時にVisual Studio 2022 の画面が現れますので「新しいプロジェクトの作成」を選び、プロジェクトを新規に作成しても構いません。

②「新しいプロジェクトの作成」画面が現れますので「Visual Basic」をドロップダウンから選んだ上で、「コンソール アプリ」を選びます。

③「新しいプロジェクトを構成します」画面が現れますので「プロジェクト名」や「場所」などを指定します。

次の画面で「追加情報」が表示されますが、「作成」をクリックしてください。

④プロジェクトが作成されます。このプロジェクトには、自動で生成されたソースファイル(Program.vb)が含まれます。

自動で生成されたProgram.vbを示します。

Imports System

Module Program
    Sub Main(args As String())
        Console.WriteLine("Hello World!")
    End Sub
End Module

⑤このプログラムをビルドして実行すると、「Hello World!」が表示されます。

⑥ソースファイルを書き換え、OpenCV へ対応させたものを示します。OpenCvSharpを導入していないため、関連するソースコードの部分でエラーが発生し、画面に赤い波線の下線で示されます。

NuGet を用いてOpenCvSharp を導入

OpenCvSharp の導入はNuGet を用いると簡単です。NuGet 上に公開されているOpenCvSharp はいくつかのバージョンやプラットフォーム用が存在しますので、間違ったものを導入しないように慎重に選択しましょう。

①ソリューションエクスプローラーのプロジェクトの上で、マウスの右ボタンを押し、[NuGetパッケージの管理]を選択するか、「プロジェクト」-[NuGetパッケージの管理]を選択します。

②「NuGet パッケージマネージャー」が現れますので、「参照」を選びます。

③このままパッケージを探しても良いのですが、数が多いので検索欄に「opencvsharp」、あるいは「opencvsharp4」(バージョン4.xの場合)と入力し、OpenCvSharp 関連のパッケージを表示させます。

④今回はOpenCV のバージョン4.x を利用したいため、OpenCvSharp4.Windows を選び[インストール]をクリックします。細かなバージョンや公開日、ライセンス情報などが表示されますので、詳細は画面で確認してください。

[インストール]をクリックしたときに確認のダイアログが現れることもありますので、適宜応答してください。

⑤しばらくするとインストールが完了します。正常にインストールが完了すると、ソースコードの下部に表示されていた赤い線が消え、OpenCvSharp のパッケージが導入されたのがわかります。

実行

ここまで完了すると、以降は一般的なVB.NETVisual Basic .NET)のプログラムと同様です。ビルドして実行した例を示します。プログラムが起動すると、画像が表示されます。

プログラムを終了させたい場合、画像表示ウィンドウにフォーカスを移動してから何かキーを押してください。コンソールウィンドウにフォーカスを置いたままでは、プログラムへキーコードが渡りませんのでプログラムは終了しません。

以降に、最終のソースリストを次に示します。

Imports System

Module Program
    Sub Main(args As String())
        Console.WriteLine("Hello World!")

        Dim rows = 200, cols = 300
        Dim img As New OpenCvSharp.Mat(rows, cols,
                            OpenCvSharp.MatType.CV_8UC3, OpenCvSharp.Scalar.Cyan)

        img.Line(New OpenCvSharp.Point(10, 10),                 ' pt1
                 New OpenCvSharp.Point(cols - 10, rows - 10),   ' pt2
                 OpenCvSharp.Scalar.Blue)                       ' color

        Dim wname = "begin"
        OpenCvSharp.Cv2.NamedWindow(wname, OpenCvSharp.WindowFlags.AutoSize)
        OpenCvSharp.Cv2.ImShow(wname, img)

        OpenCvSharp.Cv2.WaitKey()
    End Sub
End Module

OpenCvSharp に対するImports を追加していないため、OpenCvSharp を利用した部分へは、必ず「OpenCvSharp.」を付加します。
実行結果から分かるように、Mat 生成時に横幅300 ピクセル、高さ200 ピクセルで、色がシアンのものを作成します。その後、Line で斜めに青色の線を引きます。

OpenCvSharp4.Extensions やOpenCvSharp4.WpfExtensions の導入

このプログラムでは不要でしたが、ここからさらに拡張したり、あるいはWPF アプリケーションやWindows フォームアプリを開発する際に、「OpenCvSharp4.Extensions」や「OpenCvSharp4.WpfExtensions」が必要になる場合があります。そのような場合は、先の「OpenCvSharp4.Windows」をインストールしたときと同じように、NuGet を利用してインストールしてください。
以降に、インストールの様子を示します。

コンソールプロジェクトは操作性に制限があります。そこで、以降の記事でWindows フォームアプリやWPF アプリケーションの例を紹介します。