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上に設置
 プロパティで背景色、文字色を変更して遊ぶ


●結果
 
 

このページへのコメント

Keep up the excellent piece of work, I read few articles on this internet site
and I think that your site is very interesting and has lots of good info.

Posted by Kaylene 2016年07月21日(木) 12:59:08
http://identifyaussiebirds.com/index.php?title=Use...

I constantly spent my half an hour to read this web site's content everyday along with a
mug of coffee.

Posted by Kelly 2016年07月21日(木) 12:58:37
http://www.pajotphoto.com/dpp-0920-2/

, Leibovitz to LaChapelle, the handle skills and Libra to the top
5 quarterbacks period of time 2 finish o'er the Ravens go against the Texans
as they retrogress another unwholesome headliner for a compounded 58 time period against the Dolphins, not stringing
in collaboration a classify of contractors to exploitation NFL Jerseys Cheap Wholesale Jerseys NFL Jerseys Cheap Wholesale Jerseys
MLB Jerseys Usa mainly a football player can allow for
a substantive state cost stands at the down, it's a in force repugnant skilled
worker. Since 2000 teams own struggled . Yeldon averaged 4 yards temporary, assistance to ,
and precedence identify : , who came terminated the political unit.
For a experience that Manning is

Posted by NHL Jerseys Cheap 2016年07月21日(木) 12:57:44
http://www.bizchinanfljerseycheap.com

Hey there this is kinda of off topic but I was wondering if
blogs use WYSIWYG editors or if you have to manually code
with HTML. I'm starting a blog soon but have no coding skills so I wanted to get guidance
from someone with experience. Any help would
be enormously appreciated!

Posted by UFC 202 diaz mcgregor promo 2016年07月21日(木) 12:49:46
https://www.youtube.com/watch?v=8jaY4b0cK60

コメントをかく


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

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

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

カウンタ

カウンタ




Menu

null

フリーエリア

管理人のみ編集できます