●プロジェクト名: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上に設置
プロパティで背景色、文字色を変更して遊ぶ
●結果