C#でOpenCVを扱うにあたりOpenCVSharpの画像オブジェクトのMatと.NetFrameworkの画像オブジェクトのBitmapに変換する方法を調べてみました。
OpenCVSharpの導入方法
ソース
//
// MatをBitmapに変換
//
using System;
using System.Windows.Forms;
using System.Drawing;
using OpenCvSharp;
using OpenCvSharp.Extensions;
// コンパイル
// csc MatToBmp.cs /r:OpenCvSharp.dll /r:OpenCvSharp.Extensions.dll
class Form1 : Form
{
PictureBox picbox1;
// コンストラクタ
Form1()
{
picbox1 = new PictureBox {
Dock = DockStyle.Fill,
SizeMode = PictureBoxSizeMode.Zoom,
};
this.Controls.Add(picbox1);
using (var mat = new Mat(@"H:\csharp\opencv\opencv_logo.png"))j
{
picbox1.Image = BitmapConverter.ToBitmap(mat);
}
}
// エントリーポイント
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
}
実行
画像ファイルからMatオブジェクトを生成し、BitmapConverter.ToBitmap()
でBitmapに変換してPictureboxのImageにセットして画像を表示しています。
この方法を抑えておくとOpenCVSharpで加工をした結果のMatオブジェクトをPcitureBoxで表示させるようなシナリオで活用できます。
コメント