OpenCvSharpもまずは実験から

前回 OpenCvSharpをインストールしサンプルプログラムを作って動いたと書きました。
現役時代にも 携わることの多かった .Netだけに スンナリと入れると思いましたが 残念ながら クラスがCvクラス・CvCppクラスとクラスをまたがったり メソッドによって扱えるイメージがMatであったり IplImageであったりと 戸惑うことが一杯!!
WEBから 本家Schimaさんが作られたHelp・Sampleのダウンロードも可能ですが、理解を深めるため Android版で行ったように OpenCvSharpでも OpenCvCookBook画像処理で取り上げているテーマをひとつひとつC#を使ってWindowsアプリで実験してみることにします。可能な限りAndroid版で少しはなじんだMatを使ったやり方 つまりはC++系メソッドで進めたいと思っています。もっともパラメータをいろいろ変えた場合の比較は おそらくAndroid版と大差ないものと思い 殆どワンパターンのコーディング集的な内容で進めます。 実は自分自身の備忘録としてまとめていこうかと・・ 

最初のテーマは 『画像を単色で塗りつぶす』

動作環境
OpenCv・OpenCvSharp Ver2.4
使用OS Windows7 Pro
VisualStudio 2008
プロジェクトで参照設定するDLL
OpenCvSharp.dll
OpenCvSharp.CPlusPlus.dll
さらに OpenCvSharpExtern.dll を exeが書き込まれるFolderに配置
コーディング
(Form1.cs)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using OpenCvSharp;
using OpenCvSharp.CPlusPlus;
namespace OpenCvShp
{
  public partial class Form1 : Form
  {
    private Mat mat;
    private Boolean flg = false;
    public Form1(){
      InitializeComponent();
    }
    private void pictureBox1_Paint(object sender, PaintEventArgs e){
      if (flg){ // どれかのボタンがクリックされたか?
        Bitmap bmp = new Bitmap(mat.Cols, mat.Rows);
        bmp = mat.ToBitmap(); // MatをBitmapに変換
        e.Graphics.DrawImage(bmp, 0, 0, bmp.Width, bmp.Height);
        bmp.Dispose();
      }
    }
    private void btnRed_Click(object sender, EventArgs e){
      fnc(new CvScalar(0, 0, 255)); // CvScalarの順番は BGR RGBでは無い!!
    }
    private void btnGreen_Click(object sender, EventArgs e){
      fnc(new CvScalar(0, 255, 0));
    }
    private void btnBlue_Click(object sender, EventArgs e){
      fnc(new CvScalar(255, 0, 0));
    }
    private void fnc(CvScalar scalar){
      mat = new Mat(new CvSize(160, 160), MatrixType.U8C3, scalar);
      flg = true;
      pictureBox1.Invalidate();
    }
  }
}

実行結果
         
Redボタンをクリックしたところ

 Windows7 Vs2008 OpenCv2.4 And OpenCvSharp

スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする