如何在Visual C++ 6.0上
使用OpenCV
王光一
東華大學 資訊工程研究所
電腦視覺實驗室
目 錄
第一步 使用Visual C++讀入檔案
第二步 使用OpenCV將影像讀入與顯示
第一步 如何使用Visual C++讀入檔案
首先,請先開啟您的VC的程式。選擇開啟新專案(FileàNew),當視窗開啟後(圖1.1),選擇MFC AppWizard (exe)的選項。右邊請填上專案名稱(Project name,本範例名稱為step1)與檔案的位置(Locatio n)。完成後請選擇OK。
圖1.1 New視窗
進入下一個視窗後請選擇Dialog based的選項,之後請按Finish的按鈕,完成新增一個視窗的程式。
進入到一個新的編輯程式(圖1.2)之後,請拉出一個按鈕(Button)出來,Button名稱為IDC_LOADIMG(圖1.3)。
請在按鈕上點滑鼠兩下(圖1.4),就會產生出一個函式。我們讀入影像的功能就寫在該函式中(圖1.5)。
圖1.2 一個新的編輯介面
圖1.3 按鈕的屬性
圖1.4 按鈕點兩下看到該視窗按OK就會產生新的函式
圖1.5 產生新的函式
我們在該函式中輸入以下程式來完成選擇檔案的動作。
void CStep1Dlg::OnLoadimg() { CFileDialog dlg(TRUE, _T("*.bmp"), "", OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY, "image files (*.bmp; *.jpg) |*.bmp;*.jpg| AVI files (*.avi) |*.avi|All Files (*.*)|*.*||",NULL);
char title[]= {"Open Image"}; dlg.m_ofn.lpstrTitle= title;
if (dlg.DoModal() == IDOK) { CString path= dlg.GetPathName(); // contain the // selected filename } } |
程式1.1
此時您可以執行一下您的程式,點選”讀入影像”的按鈕之後就會開啟瀏覽視窗讓您選擇檔案。目前您可以讀的格式有.bmp,.jpg,.avi。(圖1.6)
圖1.6 開啟檔案的視窗
第二步 使用OpenCV將影像讀入與顯示
首先,使用OpenCV前有一些前處裡的動作必須先完成。動作步驟如下:
安裝好OpenCV的安裝檔。
到VC的ProjectàSettings中,選擇C/C++的頁面。在Gategory選擇Preprocessor。請在Additional include directories中輸入以下位置:
C:/Program Files/OpenCV/cv/include
C:/Program Files/OpenCV/otherlibs/highgui
選擇Link的標籤,在Gategory中選擇Input。再來在Additional library path中輸入:
C:/Program Files/OpenCV/lib
最後,在GategoryàGeneral中請在Object/library modul輸入以下:
cv.lib highgui.lib
完成後請按OK。
要檢查是否已完成include檔案的包含,請在VC選Tool àOption,開啟新視窗之後選擇Directories看看是否有出現之前輸入的路徑(圖1.7)。
圖1.7 檢查是否有完成include檔案夾的連結
完成載入之後,下一步開啟step1.h的標頭檔。請在檔案後面加入以下程式。
#if !defined IMAGEPROCESSOR #define IMAGEPROCESSOR
#include <stdio.h> #include <math.h> #include <string.h> #include "cv.h" // include core library interface #include "highgui.h" // include GUI library interface
class ImageProcessor {
IplImage* img; // Declare IPL/OpenCV image pointer
public:
ImageProcessor(CString filename, bool display=true) {
img = cvvLoadImage( filename ); // load image
if (display) {
// create a window cvvNamedWindow( "Original Image", 1 );
// display the image on window cvvShowImage( "Original Image", img ); } }
~ImageProcessor() {
cvReleaseImage( &img ); } };
#endif
|
程式1.2
其中我們要使用cvv開頭的函式,該函式隸屬於highgui.h中的成員。至於highgui.h中有什麼函式可以使用請參考附錄A。
請在OnLoading()的按鈕函式中輸入:
ImageProcessor ip(path);
至於該程式位置請參考圖1.8。
圖1.8
執行一下您的程式,任意開啟圖片。其結果應該如圖1.9。