今までのサンプルコードでは、CV_8UC3のよう形で各要素ごとunsigned charなデータで画像バッファを扱っていました。
OpenCVでは、Mat型のインスタンスを作成するときの引数指定で、 16bit整数型や浮動小数点型などの形式のバッファも作れるようになっています。
利用できる型
Mat型の変数を作る際に、MatTypeで画像バッファのデータ型の種類が指定ができます。
var mat = new Mat(240, 320, MatType.CV_32FC3);
インテリセンスでのコード補間で候補が表示されるので、なんとなく使えると思います。
これらのMatType型の、各要素は以下のような意味になってます。
サンプル
これだけでは、あまり意味はないですが、CV_32FC3でMatを作成して、グラデーションを書いてみました。
ウィンドウ表示の前に、特に型変換などせずともそのまま表示できるようです。
staticvoid Main(string[] args) { using (var mat = new Mat(240, 320, MatType.CV_32FC3)) using (var win = new Window("image")) { var indexer = mat.GetGenericIndexer<Vec3f>(); for (var y = 0; y < mat.Height; y++) { for(var x = 0; x < mat.Width; x++) { var px = new Vec3f(); px[0] = (float)x / mat.Width; px[1] = (float)y / mat.Height; px[2] = 0; indexer[y, x] = px; } } win.ShowImage(mat); Cv2.WaitKey(); } }