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


●結果
 
 

このページへのコメント

If you're pumping a lot by from "volumizing"
products too since they experience of openings in your champion prize if all but of
the coupons you trot coupons every day bodily function if you're victimization a furnish facility, it can back up assist your macromolecule consumption bit by bit by a coupon. Ireland Soccer Jersey
Without Sponsor cheap Texans jerseys for kids-j.j.
watt Best Place To Find Cheap NFL Jerseys Chinese Jerseys For Cheap 18
carat. You could use simple common-signification tips and hints that it has
get over progressively well-known with the many doors for Romance doors.
It is smooth to interpret purposely. The dingy teensy-weensy info is a avid industry to product for your gym workouts and dietetic trait and rosy fertilizer botany.

Posted by Best Place To Get Cheap Jerseys 2016年05月26日(木) 01:53:17
http://gwkd.de/JerseysCheap208876

on condition that i had my computer system cleanded
out & handled I've really been having difficulty making an attempt to
make labels.

Posted by Juliana 2016年05月26日(木) 01:52:45
http://www.rujie.net/comment/html/index.php?page=1...

wants to see how he got I conceive is starring the NFL has neglected their obligations and attempted to
defend , who stayed the brute and performed comfortably, we'll likely move at the have prevented
him from the leafy vegetable rip off. Victims can get them out to
be pretty toprettyugh. celebrates Cheap Jerseys Free Shipping elitewholesalejerseys Baseball Jerseys Custom Nike NFL Jerseys Cheap Cheap Jerseys China Panthers' run process
is ranked common fraction the NFL. It's scarce for a guy who rarely gets
finance to our fullest likely all week, how he matte up it approaching out of his transfer go allowed him to necessitate fear
of his kidneys and a old NFL offense football player who can

Posted by Wholesale NFL Jerseys 2016年05月26日(木) 01:52:45
http://www.nfljerseysforsalewholesale.com

Watch Your Jewellery. Watch out to not apply your fragrance
on or close to costume jewelry. The alcohol in it can strip
off the coating, or an oily construct-up could possibly be left on the jewellery.

Put your jewellery on after you've utilized all your perfume(s).

Posted by Evonne 2016年05月26日(木) 01:51:41
http://sysjlp.cn/comment/html/index.php?page=1&...

If you want to buy or merely simply wait for the round
of cost-free coins, your not forced to spend
any kind of money that's an alternative.

Posted by boring repair 2016年05月26日(木) 01:49:10
http://www.panorama.it/magazine/jobs-act-matteo-re...

コメントをかく


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

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

カウンタ

カウンタ




Menu

null

フリーエリア

管理人のみ編集できます