OpenCV CLI VC# VS2008 VS2012 画像処理 GUIプログラミング 画像処理の研究を行う事になったので、画像処理について勉強しています。

テンプレートとして登録する基本プロジェクト

  • OpenCvSharp, VC#

メインフォーム



プログラムの起動時に表示されるフォームです。各種ボタンにはBasicImageProcessing, MeachineLearning, CalculateAnalysis...等の名前をつけて、個別に作成した子フォームを呼び出します。もしくは、1つの基底フォームを作成しておき、目的に応じて動的なコンポーネントを追加します。

子フォーム:画像表示の基本フォーム


画像を表示させる基本フォームはQVGAサイズの2画面として、表示のためにOpenCvSharpのpictureBoxIplを用います。pictureBoxIplは.NETのpictureBoxを派生したユーザー定義のツールで、BitmapとIplImageの相互変換が容易に行えます。Panelの上にpictureBoxIplを置くことで、AutoScrollなどの便利機能が使用できます。


MenuStripには画像のロード、セーブ、各種エフェクト等、あらゆるプロジェクトで使用する可能性が高いものを予め登録しておきます。僕はPictureBoxがダブルクリックされたら画像の保存、シングルクリックなら座標値の取得等を行うメソッド等をいつも使用するので、これも追加しています。






MenuStripにメニューを追加していき、メニュークリック時のイベントを追加していきます。



private void pictureBoxIpl_DoubleClick(object sender, EventArgs e)
        {
            String filename;
            if (net.SaveFilePass(out filename, "IMG(*.png;*.jpeg;*jpg;*pgm;*ppm;*PNG;*JPG;*JPEG)|*.png;*.jpeg;*.jpg;*.pgm;*.ppm;*.PNG;*.JPG;*.JPEG") == false)
                return;
            pictureBoxIpl.Image.Save(filename);
        }
//頻繁に使用するメソッドはクラスにまとめます. "net"はインスタンスです.


 /// <summary>
        /// OpenFileDialog[拡張子フィルタリング]
        /// </summary>
        /// <param name="Ftr">FilterName(ext1,ext2,...)|ext1;ext2;...
        /// 例:"Excelファイル(*.xls;*.xlsx)|*.xls;*.xlsx"; </param>
        /// <returns></returns>
        public bool GetFilePass(out String Pass, String Ftr)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.InitialDirectory = @"C:\";
            ofd.Multiselect = true;
            ofd.Filter = Ftr;
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                Pass = ofd.FileName;
                return true;
            }
            else
            {
                Pass = null;
                return false;
            }
        }

2448 x 3264の画像を表示

  • 左:PanelのAutoscroll=true, PictureBoxをAutoSize
  • 右:PanelのAutoscroll=false,PictureBoxをStrechMode

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

カウンタ

カウンタ




Menu

null

フリーエリア

管理人/副管理人のみ編集できます