C#コマンドラインのcsc.exeでOpenCVSharpを使う

OpenCVSharp コンピュータ

VisualStudioを使わず、もっぱらコマンドラインからcsc.exeでC#のプログラミングをしています。
言語やライブラリが少し古かったりしますが、Windows10にテキストエディタをインストール(メモ帳を使えばそれもいらない)し、csc.exeにパスを通してあげるだけでプログラミング環境が出来上がります。

VisualStudioで新規にアプリケーションを作成する場合プロジェクトを作成する儀式が必要ですが、csc.exeでコンパイルするのであれば、いきなりテキストエディタでソースファイルのコーディングを始めることが出来ます。(逆にプロジェクトを作成するのが大変ですが。)
言語学習で多量にサンプルプログラムを組んだり、雑な使い捨てプルグラムを大量生産する向きには非常に都合が良いです。

.Net Frameworkのライブラリ群を利用することが出来るので大概のアプリケーションが作成することが出来るのですが、Nugetなどで誰かが作って公開しているライブラリを利用させてもらうことで、さらに出来ることが増えます。

今回はOpenCVというライブラリをNugetを使ってインストールした作業手順になります。

事前準備

Visual C++ 再頒布可能パッケージ 20005、2008、2010などをx86、x64ともにインストール

インストール手順

Powershell.exeで実行

Nugetのインストール

PS>Install-PackageProvider -Name Nuget

OpenCVSharpのインストール

PS>Find-Package -Name OpenCvSharp3-AnyCPU -Source https://www.nuget.org/api/v2 | Install-Package

OpenCV関連のパッケージがいろいろありまして、導入後うまく動いてくれたパッケージは「OpenCvSharp3-AnyCPU」だけでした。

ダイナミックリンクライブラリ(dll)の参照

実行時ダイナミックリンクライブラリを参照するためc#のソースをコンパイルして出来上がった.exeファイルと同じディレクトリ内に、以下のディレクトリにあるdllファイルを全てコピーする必要があります。ただしruntimesのdllは実行環境に合わせてx86かx64を選択します。

C:\Program Files\PackageManagement\NuGet\Packages\OpenCvSharp3-AnyCPU.4.0.0.20181129\lib\net461
C:\Program Files\PackageManagement\NuGet\Packages\OpenCvSharp3-AnyCPU.4.0.0.20181129\runtimes\win10-x64\native

コンパイルや実行時dllの参照が必要となるので、Makefileなどでカレントディレクトリにコピーする手順を組むと良さそうです。

インストール確認

ソース

// 
// OpenCVSharpインストール確認のサンプル
// 
using System;
using OpenCvSharp;
using OpenCvSharp.Extensions;

// コンパイル
// csc test.cs /r:OpenCvSharp.dll /r:OpenCvSharp.Extensions.dll

class Program
{
    // アプリケーションのエントリポイント
    static void Main()
    {
        using (var mat = new Mat(@"H:\csharp\opencv\opencv_logo.png"))
        {
            Cv2.ImShow("sample", mat);
            Cv2.WaitKey(0);
        }
    }
}

コンパイル

/r:オプションでOpenCvSharp.dllやOpenCvSharp.Extensions.dllを参照すること。

実行

画像が表示されます。キーを押すとウィンドウが消えます。

これでC#からOpenCVを扱えるようになりました。

コメント