shuhelohelo’s blog

Xamarin.Forms多めです.

C#でOpenCVを使うOpenCVSharp

OpenCVC#ラッパーとしてOpenCvSharpというNugetパッケージがあります。

github.com

これを使うとC#OpenCVによる画像処理や色々ができます。

例えば、画像を読み込んで表示させたり、画像の色空間を変更したりというのは以下のようなコードを書きます。

using OpenCvSharp;
using System;

namespace OpenCVColorExtraction
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");

            string inputFilePath = "Images/gauge-1.jpg";

            var src = Cv2.ImRead(inputFilePath);
            if (src is null)
                Console.WriteLine("fail to read file.");

            Mat hsv = new Mat();
            Cv2.CvtColor(src, hsv, ColorConversionCodes.RGB2HSV);

            using (new Window("src", src))
            using (new Window("hsv", hsv))
                Cv2.WaitKey();

        }
    }
}

C++Pythonでおなじみだと思います。

これを実行すると以下のように元画像とHSV色空間に変換された画像が表示されます。 f:id:shuhelohelo:20201123091140p:plain

インストール

インストールは簡単で、OpenCvSharpのReadMeにも書かれているとおり、Nugetパッケージからインストールするだけです。

ここではWindowsの場合のみを紹介しますが、他にもUWPの場合やUbuntuの場合などが書いてありますので、自分の環境に合わせてインストールするパッケージを選択します。

Windowsの場合は2とおりあります。

  • OpenCVSharp4 と OpenCVSharp4.runtime.winの組み合わせ
  • OpenCVSharp4.Windowsのみ

特段理由がなければ後者のOpenCvSharp.Windowsをインストールすればよいでしょう。