序文
OpenCVはフリーのコンピュータビジョンソフトウェアであり、イメージ処理のためのオープンソースライブラリです。この記事は、プログラマがウィンドウ制御ベースのOpenCVアプリケーションを実行するために、ビジュアルc++開発環境を設定するのに役立ちます。
OpenCVライブラリは開発環境に組み込むことができます。設定は簡単で、以下の6つのステップでVisual Studio 2010の設定方法を説明します。
ビジュアルC++の設定
Visual Studio 1020の準備
ステップ1:
プロジェクトのプロパティマネージャで "Debug|Win32 "を選択して右クリックし、プロパティを選択して次のステップに進みます。
ステップ2:
C/C++ カテゴリから汎用サブカテゴリを選択します。Add Extra Folderを選択し、以下のパスを追加します。
C:¦build¦include.
64ビット用:
C:\opencv\build\x86\vc10\bin;.
32ビット用:
C:\opencv\build\x64\vc10\bin;.
ステップ3:
システムが64ビットの場合は、ライブラリパス "C:˶‾᷄‾᷅"を選択し、64ビットの場合は、ライブラリファイル "C:˶‾᷄‾᷄‾᷄"を選択し、OKボタンをクリックします。"を選択し、[OK]ボタンをクリックします。
ステップ4:
このステップでは、OpenCVライブラリを追加する必要があります。これらのライブラリは "C:∕∕∕∕∕∕"にあります。
デバッグ版
| opencv_calib3d248d.lib | opencv_contrib248d.lib | opencv_core248d.lib | 
| opencv_features2d248d.lib | opencv_flann248d.lib | opencv_gpu248d.lib | 
| opencv_highgui248d.lib | opencv_imgproc248d.lib | opencv_legacy248d.lib | 
| opencv_ml248d.lib | opencv_nonfree248d.lib | opencv_objdetect248d.lib | 
| opencv_ocl248d.lib | opencv_photo248d.lib | opencv_stitching248d.lib | 
| opencv_superres248d.lib | opencv_video248d.lib | opencv_videostab248d.lib | 
リリース準備
例えば、 opencv_calib3d248d.lib からopencv_calib3d248.lib など。
ステップ5:
共通言語ランタイム・サポートを純粋なMSIL共通言語ランタイム・サポートから共通言語ランタイム・サポートに変更します。その後、"ok "をクリックして設定を完了します。
ステップ6:
以下の環境アドレスを追加してください:
64-bit: C:\opencv\build\x86\vc10\bin;.
32-bit: C:\opencv\build\x64\vc10\bin;.
#p#
使用コード
コードを書き始めるには、以下のようにヘッダーファイルをインクルードする必要があります。ヘッダーファイルの後の名前空間の外で、capture変数とframe変数を宣言します。これらの変数はポインタ変数です。
#pragma once  
#include "opencv/cv.h"  
#include "opencv/highgui.h"  
#include "opencv2/opencv.hpp"  
#include "opencv2/core/core.hpp"  
 
CvCapture* capture;  
IplImage* frame; 
cvCaptureFromCAM 関数は,最初のカメラのキャプチャを初期化します.渡されたインデックスが 1 の場合,2 番目のカメラが初期化されます.
capture = cvCaptureFromCAM(0); 
trackBar1->Maximum = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT); 
リソースからコレクションを解放します。
cvReleaseCapture(&capture); 
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e)   
{  
   if(comboBox1->Text == "")  
   {  
    MessageBox::Show(this,"Select Capture Method","Error!!!");  
   }  
   if(button2->Text == "Start")  
   {  
    if (comboBox1->Text == "Capture From Camera")  
    {                      
        capture = cvCaptureFromCAM(0);  
        trackBar1->Minimum = 0;  
        trackBar1->Maximum = 0;  
        button2->Text = "Stop";  
        timer1->Start();  
    }  
    else if (comboBox1->Text == "Capture From File")  
    {      
        openFileDialog1->Filter = "AVI files (*.avi)|*.txt|All files (*.*)|*.*";  
        openFileDialog1->FilterIndex = 2;  
        openFileDialog1->RestoreDirectory = true;  
        openFileDialog1->FileName ="";  
        if ( openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK )  
        {          
         char *fileName = (char*) Marshal::StringToHGlobalAnsi(openFileDialog1->FileName).ToPointer();                      
         capture = cvCaptureFromFile(fileName);  
         trackBar1->Minimum = 0;  
         trackBar1->Maximum = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT);  
         button2->Text = "Stop";  
         timer1->Start();  
       }                  
    }  
   }  
   else if(button2->Text == "Stop")  
   {  
     cvReleaseCapture(&capture);          
     button2->Text = "Start";  
     timer1->Stop();  
   }  
} 
frame = cvQueryFrame(capture); 
以下の文は、OpenCVのimshow("windowname",frame)関数の代わりにイメージを表示するためのものです。
pictureBox1->Image  = gcnew System::Drawing::Bitmap(frame->width,frame->height,frame->widthStep,System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr) frame->imageData);  
pictureBox1->Refresh(); 
CV_CAP_PROP_POS_MSEC : 時刻情報を取得します.
private: System::Void timer1_Tick(System::Object^  sender, System::EventArgs^  e)   
{  
    try 
    {          
        frame = cvQueryFrame(capture);      
        if(frame != NULL)  
        {  
            pictureBox1->Image  = gcnew System::Drawing::Bitmap(frame->width,frame->height,frame->widthStep,System::Drawing::Imaging::PixelFormat::Format24bppRgb,(System::IntPtr) frame->imageData);  
            pictureBox1->Refresh();  
      
            trackBar1->Value = (int)cvGetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES);              
            double codec_double = cvGetCaptureProperty(capture,CV_CAP_PROP_FOURCC);  
            label6->Text = "Codec: " + System::Text::Encoding::UTF8->GetString(BitConverter::GetBytes((int)codec_double));  
            label7->Text = "Time: " + (TimeSpan::FromMilliseconds( cvGetCaptureProperty(capture,CV_CAP_PROP_POS_MSEC) ).ToString())->Substring(0, 8);  
            label8->Text = "Frame No.: " + (int)cvGetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES);  
            label9->Text = "Video Resolution: " + (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_HEIGHT) + " X " + (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_WIDTH);  
            label11->Text = "Video Frame Rate: " + (int)cvGetCaptureProperty(capture,CV_CAP_PROP_FPS);  
        }  
    }catch(...){}  
} 
private: System::Void trackBar1_Scroll(System::Object^  sender, System::EventArgs^  e)   
{  
    cvSetCaptureProperty(capture,CV_CAP_PROP_POS_FRAMES, trackBar1->Value);  
} 
もようしもの
ビジュアルC++の設定方法
[1] http://.rg/
[2] http://...//履歴書
[3] http://..rg/
[4]





