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

目的


 開発環境が整っていることを確認するために、ボタンクリックで画像を読み込み表示させる簡単なプログラムを作成する。

※OpenCV2.2で実装した

準備


 D:\imageに、ファイル名"waraebaii.jpg" サイズ640x480[pix]を設置する。


開発


●プロジェクト名:pro1 
GUIプログラムの準備を参照
●ソリューションエクスプローラーは次の様になる。
 


●Form1.cpp
 
//実際には、必要な物だけpragma commentを記述すれば良い
#ifdef _DEBUG
    //Debugモードの場合.   
   #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_core220d.lib")            // opencv_core
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_imgproc220d.lib")        // opencv_imgproc
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_highgui220d.lib")        // opencv_highgui
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_objdetect220d.lib")    // opencv_objdetect
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_ml220d.lib")            // opencv_ml
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_features2d220d.lib")    // opencv_features2d
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_video220d.lib")        // opencv_video
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_calib3d220d.lib")        // opencv_calib3d
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_flann220d.lib")        // opencv_flann
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_contrib220d.lib")        // opencv_contrib
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_legacy220d.lib")        // opencv_legacy
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_gpu220d.lib")            // opencv_gpu
#else
    //Releaseモードの場合
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_core220.lib")            // opencv_core
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_imgproc220.lib")        // opencv_imgproc
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_highgui220.lib")        // opencv_highgui
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_objdetect220.lib")    // opencv_objdetect
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_ml220.lib")            // opencv_ml
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_features2d220.lib")    // opencv_features2d
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_video220.lib")        // opencv_video
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_calib3d220.lib")        // opencv_calib3d
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_flann220.lib")        // opencv_flann
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_contrib220.lib")        // opencv_contrib
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_legacy220.lib")        // opencv_legacy
    #pragma comment(lib,"C:\\OpenCV2.2\\lib\\opencv_gpu220.lib")            // opencv_gpu
#endif

#include "stdafx.h"
#include <stdio.h>
#include "Form1.h"
#include "opencv2\\opencv.hpp"        //これ一つincludeしておけばよい
#define  LOADPASS "D:\\image\\waraebaii.jpg"  //読み込む画像のパス

using namespace pro1;

System::Void Form1::button_open_Click(System::Object ^sender, System::EventArgs ^e)
{

//==============================================================================================================================//
//===cvCreateImage=画像用メモリの確保。cvCreate(画像サイズ、ビット深度、チャネル)
//===サイズ指定にはcvSize(width,height)が便利
//===ビット深度は基本的に8Uを使う。ソーベルフィルタ等、一部関数では16Sを使用しなければならないので、その時はそれに従う。
//===使い終わった段階でメモリを解放する。cvReleaseImageにIplImageのポインタのポインタを渡す。

  IplImage *loadImage = cvCreateImage(cvSize(640,480), IPL_DEPTH_8U, 3);        

//==============================================================================================================================//
//cvLoadImage(char* filename, int flags)
//===BMP,JPEG,PNG,PPM,PGM,PBM..よく使う画像フォーマットには対応している。
//=====読み込んだデータを解析して、適切なフォーマットを選択してくれる。
//===flagsを省略するとCV_LOAD_IMAGE_ANYCOLORになる。これは3チャネルか1チャネルかを自動判断する。
  
  loadImage = cvLoadImage(LOADPASS);                                            

//==============================================================================================================================//
//=loadImageに失敗した場合(ファイルパスの間違いなど)はNULLを返すので、その時はメッセージボックスで表示。
//===MessageBox::Show("String")

  if(loadImage == nullptr)
    {
    MessageBox::Show("loadImage Error");                                    
  }

//==============================================================================================================================//
//表示ウィンドウの作成=cvNamedWindow(char * WINDOWNAME, int flags)
//===デフォルトでflagsはCV_WINDOW_AUTOSIZE(=1)になっている。
//=====flags=1は画像データに合わせてウィンドウサイズを自動変更。
//=====flags=0はウィンドウサイズに合わせて画像データを拡大/縮小。

  cvNamedWindow("LOAD", CV_WINDOW_AUTOSIZE);

//==============================================================================================================================//
//表示ウィンドウの表示=cvShowImage(char *WINDOWNAME, IplImage *image)

  cvShowImage("LOAD", loadImage);

//==============================================================================================================================//
//cvWaitKey(int delaytime)
//===delaytime[ms]だけ、プログラムを遅延させる
//===delaytimeが0の時、何かキーが押されるまでプログラムは停止する
 
  cvWaitKey(0);     //何かキーが押されるまではイメージを表示させるため

  cvDestroyAllWindows();       //cvNamedWindowで作成したウィンドウの一斉破棄.
  cvReleaseImage(&loadImage);   //不要になった段階で解放する。解放してもウィンドウに表示したイメージが消える訳ではない
}


●Form1.h

  関数のプロトタイプ宣言
  System::Void button_open_Click(System::Object^  sender, System::EventArgs^  e);


●Form1.h(デザイン)
 
 オブジェクト名(button_open)をForm1.h上に設置
 プロパティで背景色、文字色を変更して遊ぶ


●結果
 
 

このページへのコメント

Hey I am so grateful I found your blog page, I really found you by error, while I was researching on Bing for something else, Regardless I am here now and would just like to say
many thanks for a fantastic post and a all round enjoyable blog (I also
love the theme/design), I dont have time to browse it all at the
minute but I have bookmarked it and also added your RSS feeds, so when I have time I will be
back to read a great deal more, Please do keep up the superb work.

Posted by Quick And Easy Way To Make Money Online 2016年08月25日(木) 14:21:05
https://www.youtube.com/watch?v=lPtbsjrEbhA

Aw, this was an exceptionally nice post. Taking a few minutes and actual effort to create a superb
article but what can I say I hesitate a lot and never manage to get anything done.

Posted by clash royale hack 2016年08月24日(水) 03:42:20
https://www.youtube.com/watch?v=B9P7TQoeINo

Howdy is it possible you care about expressing which site
platform you're making use of? I am going
to begin my own site in the future but I am having a difficult time
producing a choice between BlogEngine/The wordpress platform/B2evolution as well
as Drupal. The primary reason we ask is because your design and
style appears different next the majority of blog sites and also i am wanting
something totally unique. . Apologies to be shut off-topic
but I experienced to ask!

Posted by facebook of sex Login 2016年08月21日(日) 23:27:24
http://Tvbodaga.com/board_PnKO00/486165

I think that what you composed was actually very reasonable.
However, what about this? suppose you added a
little information? I ain't suggesting your information isn't solid,
but suppose you added something that grabbed a person's attention? I mean プロジェクト1:ボタンクリックで画像読み込み(コメント) - GUI画像処理プログラミング :
OpenCV Visual Studio CLR and C# is a little boring. You might look at Yahoo's front page
and watch how they create post headlines to get people to open the links.
You might add a related video or a pic or two to get people interested about everything've got
to say. In my opinion, it might make your posts a little
livelier.

Posted by direct marketing agency 2016年08月13日(土) 18:09:08
http://www.websitedesignfirmsga.com

Weshalb Beamtenkredite? Drei Tipps zu der Fragestellung Der Kredit

Netzauftritt zu der Problematik Online Kreditrechner

7 Vorschl辰ge zum Thema Autokredit G端nstig.Netzauftritt betreffend Autokredite.

Artikel zu der Problemstellung Kredit F端r Rentner.

Posted by Ratenkredite Vergleich 2016年08月10日(水) 03:51:32
http://Www.Rollingbe.com/index.php?title=Utente:Ha...

コメントをかく


画像に記載されている文字を下のフォームに入力してください。

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

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

カウンタ

カウンタ




Menu

null

フリーエリア

管理人のみ編集できます