OpenCVSharp4の画像の読込、表示および保存

基本的な機能も備忘録代わりに書いておく

画像の読み込み

①Mat()で読み込む方法と②Cv2.imread()で読み込む方法がある。

//①Mat()で読み込み  
Mat mat1 = new Mat("D:\\src.png");  

//②Cv2.Imreadで読み込み  
Mat mat2 = Cv2.Imread("D:\\src.png");  

ちなみに両方とも第2引数に Imreadmodes.Grayscaleを追加することで、
グレースケールで読み込める。
バックスラッシュを使えないときは「\\」を代わりに使うか””の前に「@」を書く

画像の表示

①Cv2.Imshow()を使う方法と②ShowImage()を使う方法

//①Cv2.Imshow()を使う方法  
Cv2.Imshow("画像です", mat);  
Cv2.WaitKey();  

//②ShowImageを使う方法  
using(var window = new Window("画像だね")){  
    /*ここらへんに他の処理を  
    書いてもかまわない*/  
    window.ShowImage(mat);  
    //こっちにも書いていいし、2重にusingステートメントしてもいい  
    Cv2.WaitKey();  
}  

ちなみに②の方がメモリ効率がいいらしい。

画像の保存

ImWriteを使う

mat.Imwrite("D:\\dst.png");  
//あるいは  
Cv2.Imwrite("D:\\dst.png", mat);  

サンプルコード

using System;  
using OpenCvSharp;  

namespace 画像の読み込みと表示_保存 {  
    class Program {  
        static void Main(string[] args) {  
            //画像の読み込み  
            Mat mat1 = new Mat("D:\\src.png");  
            Mat mat2 = Cv2.ImRead("D:\\src.png", ImreadModes.Grayscale);  

            //画像の保存  
            Cv2.ImShow("画像だよ", mat1);  
            using(var window2 = new Window("画像だね")) {  
                window2.ShowImage(mat2);  

            }  
            Cv2.WaitKey();  


            //画像の保存  
            mat1.ImWrite("D:\\dst1.png");  
            Cv2.ImWrite("D:\\dst2.png", mat2);  

        }  
    }  
}