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


●結果
 
 

このページへのコメント

This is a good tip especially to those new to the blogosphere.
Short but very precise info Many thanks for sharing this one.
A must read article!

Posted by cover.google plus 2016年09月08日(木) 23:09:32
http://uptuto.com/

I do not write a ton of responses, but I browsed some of the
remarks on this page プロジェクト1:ボタンクリックで画像読み込み(コメント) -
GUI画像処理プログラミング : OpenCV Visual Studio CLR and C#.
I actually do have some questions for you if you don't mind.
Could it be just me or do some of the comments appear as if they are
left by brain dead individuals? :-P And, if you are writing on other places, I would like to keep up
with everything fresh you have to post. Could you post a list of all of
all your public sites like your twitter feed, Facebook page or linkedin profile?

Posted by twenty one pilots 2016年09月08日(木) 02:20:41
https://www.youtube.com/watch?v=saMEwMtKu4U

Thanks for finally writing about >プロジェクト1:ボタンクリックで画像読み込み(コメント) - GUI画像処理プログラミング : OpenCV Visual Studio CLR and C#
<Liked it!

Posted by 3 Week Diet Plans Reviews 2016年09月01日(木) 09:09:13
https://www.youtube.com/watch?v=vMjONrLKZ4M

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

コメントをかく


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

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

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

×

この広告は60日間更新がないwikiに表示されております。

カウンタ

カウンタ




Menu

null

フリーエリア

管理人のみ編集できます