2017年10月8日日曜日

Matを使うのがイマ風?

openCvSharp2 以降はC++ interfaceを使えるので、indexerでピクセルを触りたい場合は "Mat"を使うとよいようだ (IplImage, CvMatではなく)

---
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;



// ここから追加
using OpenCvSharp;
using OpenCvSharp.CPlusPlus;    // Matを使うなら必要
using System.Diagnostics;

namespace _03_matTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Mat matImage = new Mat(@"C:\Users\hoge\Pictures\hoge.jpg");

            var indexer = matImage.GetGenericIndexer<Vec3b>();  // indexer でアクセスする例
            var px = indexer[5, 5];   // x:5 y:5のpixel
            Debug.WriteLine(px[0] + ":" + px[1] + ":" + px[2]);
            px[0] = 0;      // B
            px[1] = 0;      // G
            px[2] = 255;    // R
            indexer[5, 5] = px;

            using (new Window("photo", matImage))   // ウィンドウを作成して画像を表示
            {
                Debug.WriteLine(matImage.Width + " : " + matImage.Height);
                Cv.WaitKey();
            }
        }
    }
}

参考にさせていただきました
http://schima.hatenablog.com/entry/2014/03/29/140106
http://sourcechord.hatenablog.com/entry/2016/08/15/235654

0 件のコメント:

コメントを投稿