機器人及視覺技術實驗指導書_第1頁
機器人及視覺技術實驗指導書_第2頁
機器人及視覺技術實驗指導書_第3頁
機器人及視覺技術實驗指導書_第4頁
機器人及視覺技術實驗指導書_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、機器人及視覺技術實驗指導書浙江工業(yè)大學機械學院2012年1月目錄第一部分:基礎編程方法 3(一)、實驗目的 3(二)、實驗設備 3(三)、實驗方法 3第二部分:分組實驗內容 18題目一:基于機器視覺的葉片面積測量系統(tǒng) 18題目二:基于機器視覺的硬幣計數(shù)系統(tǒng) 18題目三:基于機器視覺的實時測距系統(tǒng) 18題目四:基于機器視覺的實時定位系統(tǒng) 18題目五:基于機器視覺的水果識別系統(tǒng) 19題目六:基于機器視覺的目標位姿測定系統(tǒng) 19題目七:基于機器視覺的形狀識別系統(tǒng) 19第一部分:基礎編程方法(一)、實驗目的1、了解VC6.0的運行環(huán)境及基本操作;2、了解基于對話框的程序的編寫;3、了解PC機USB攝像

2、頭的控制;4、熟悉數(shù)字圖像的存儲形式以及常用處理方法;5、利用VC對攝像頭對圖像進行采集與處理。(二)、實驗設備1、硬件環(huán)境:PC機與USB攝像頭;2、軟件環(huán)境:Windows操作系統(tǒng)、VC6.0編輯器、OpenCV1.0開源庫。(三)、實驗方法編寫程序前,首先下載OpenCV1.0,下載地址:,按照網站的“VC6下安裝與配置OpenCV1.0”,對VC和操作系統(tǒng)進行設置,正確操作完成后,按照下面的步驟編寫程序。一、開始菜單Microsoft Visual Studio 6.0 Microsoft Visual C+ 6.0,如圖1所示,VC6.0運行界面如圖2所示。圖1圖2二、File ne

3、w彈出圖3所示的對話框。圖3在對話框中選擇“MFC AppWizard(exe”,并在“Project name”對話框中填寫程序名稱,點擊“OK”退出對話框。圖4三、添加文件至camera文件下,包括“DirectShow”文件夾、“CameraDS.cpp”和“CameraDS.h”。圖5四、將工程文件的樹形結構展開,添加“CameraDS.cpp”至“Source Files”,添加“CameraDS.h”至“Header Files”。右鍵單擊“Source Files”彈出菜單,選擇“Add Files to Folder”,彈出窗口,選擇“CameraDS.cpp”文件,并確定;同

4、理添加“CameraDS.h”文件。添加后,這兩個文件出現(xiàn)在目錄樹中。 圖6五、項目配置,Project Setting彈出圖7所示的對話框,選擇“C+”標簽頁,在“Category”中選擇“preprocessor”,在“Additional include directories”中添加“DirectShow/Include”;選擇“Link”標簽頁,在“Category”中選擇“Input”,在“Additional include path”中添加“DirectShow/Lib”;在“Object/library modules”中添加“cxcore.lib cv.lib cvaux.

5、lib highgui.lib cvcam.lib”。選擇“C+”標簽頁,在“Category”中選擇“Precompiled Headers”,修改默認選項為“Automatic use of precompiled headers”。 圖7六、編譯程序,打開對話框資源,如圖8所示。圖8七、將“Picture”控件拖入窗口,設置合適的大小,并修改其屬性,更改ID為“IDC_PICL”,“IDC_PICR”。圖9八、在“cameraDlg.h”中添加頭文件,camerads.h、highgui.h、 。圖10九、在CCameraDlg類中(即在cameraDlg.h文件中),添加公共變量。CD

6、C *pDCL, *pDCR ; /圖形設備環(huán)境指針HDC hDCL, hDCR ; /設備上下文的句柄CRect rectL, rectR; /窗口區(qū)域CCameraDS camera ; /CCameraDS類的對象CvvImage m_imageL ;/左窗口圖像數(shù)據(jù)CvvImage m_imageR ;/右窗口圖像數(shù)據(jù)int m_iWidth; /圖像寬度int m_iHeight; /圖像高度bool m_bCameraOpen ;/判斷圖像是否已經打開,標志變量int cam_count; /攝像頭數(shù)目bool m_bImageShow ; /圖像是否正在顯示圖11十、對上述定義的

7、部分變量進行初始化,初始化放在構造函數(shù)中。m_iWidth = 320 ;m_iHeight = 240 ;m_bCameraOpen = false ;m_bImageShow = false ;圖12十一、添加按鈕,實現(xiàn)查找攝像頭,并對攝像頭進行初始化。void CCameraDlg:OnOpenCamera( /將代碼添加到這個函數(shù)中圖13void CCameraDlg:OnOpenCamera( if(m_bCameraOpenreturn ;cam_count = CCameraDS:CameraCount(; if(!cam_countMessageBox(未查找到攝像頭!,MB_

8、ICONINFORMATION;else/獲取所有攝像頭的名稱CString str ;for(int i=0; i 0str.Format(編號為%d攝像機的名字為%s,i,camera_name ;/MessageBox(str,MB_ICONINFORMATION;elsestr.Format(不能獲得編號為%d攝像機的名字,i ;MessageBox(str,MB_ICONINFORMATION; /左邊顯示窗口設置關聯(lián)pDCL = GetDlgItem(IDC_PICL-GetDC( ;hDCL= pDCL-GetSafeHdc(;GetDlgItem(IDC_PICL-GetCli

9、entRect(&rectL;/右邊顯示窗口設置關聯(lián)pDCR = GetDlgItem(IDC_PICR-GetDC( ;hDCR= pDCR-GetSafeHdc(;GetDlgItem(IDC_PICR-GetClientRect(&rectR;if(!camera.OpenCamera(0,0,320,240MessageBox(不能打開攝像頭!,MB_ICONINFORMATION; elseMessageBox(攝像頭初始完畢!,MB_ICONINFORMATION;m_bCameraOpen = true ; 十二、添加多線程函數(shù),實現(xiàn)圖像的采集和處理。 圖14UINT CCame

10、raDlg:ReceiveThread(void *paramCCameraDlg *pDlg = (CCameraDlg*param ;while(1if(!pDlg-m_bImageShowreturn 0 ;/獲取一幀IplImage *pFrame = pDlg-camera.QueryFrame(;/左邊顯示窗口,顯示原始圖像pDlg-m_imageL.CopyOf(pFrame;SetRect(pDlg-rectL, 0,0,pFrame-width,pFrame-height; pDlg-m_imageL.DrawToHDC(pDlg-hDCL,&(pDlg-rectL;/可以添

11、加一個函數(shù)用于圖像處理,將處理后的結果顯示在右邊窗口/圖像處理函數(shù)到添加這里/右邊顯示窗口,顯示處理后的圖像pDlg-m_imageR.CopyOf(pFrame,1;SetRect(pDlg-rectR, 0,0,pFrame-width,pFrame-height;pDlg-m_imageR.DrawToHDC(pDlg-hDCR,&(pDlg-rectR;/延時200毫秒Sleep(200 ; return 0 ;十三、為按鈕“顯示圖像”添加函數(shù),調用線程函數(shù)。void CCameraDlg:OnImageShow( if(!m_bCameraOpenreturn ;m_bImageSh

12、ow = true ;AfxBeginThread(ReceiveThread, this ; 圖15十四、添加“停止顯示”按鈕,并為其添加函數(shù)。圖16void CCameraDlg:OnImageStop( m_bImageShow = false ;十五、由此編譯程序,并運行,可以得到17所示的界面,因為沒有添加圖像處理函數(shù),所以兩個窗口得到的畫面一致。圖17十六、添加圖像處理函數(shù)。 圖18void CCameraDlg:ImageThreshold(char *pImageData, int width, int height, int nChannels, int widthStepc

13、har *RImageData,*GImageData,*BImageData ;for(int i=0; i height; i+for(int j =0 ; j width; j+RImageData = pImageData + i*widthStep + j*nChannels + 2 ;GImageData = pImageData + i*widthStep + j*nChannels + 1 ;BImageData = pImageData + i*widthStep + j*nChannels + 0 ;if(uchar*RImageData ImageThreshold(pF

14、rame-imageData,pFrame-width,pFrame-height,pFrame-nChannels,pFrame-widthStep ;圖19十八、程序運行結果。圖20十九、添加“關閉攝像頭”按鈕,并為其添加函數(shù)。圖21void CCameraDlg:OnCloseCamera( if(m_bImageShowMessageBox(請先停止顯示圖像!,MB_ICONINFORMATION;return ;if(m_bCameraOpencamera.CloseCamera(;m_bCameraOpen = false ; 提示:在對程序進行參數(shù)配置完畢,添加代碼的同時,建議對

15、程序少有改進,即進行編譯處理,以檢查是否出現(xiàn)錯誤。如果出現(xiàn)很多錯誤,使用菜單Build-Rebuild All,對程序進行完全編譯。第二部分:分組實驗內容在熟悉以上基本操作步驟的基礎上,進行5-7人分組實驗,實驗題目可在以下題目中選擇或自行定義,通過教師審核后,開始實驗。題目一:基于機器視覺的葉片面積測量系統(tǒng)基本要求:將一葉片放置在攝像頭正下方(圖像采集背景自制,背景不能更換),采集一幅圖像保存至計算機,程序能夠計算出該葉片的實際面積(以平方毫米為單位)。葉片測試對象不少于40片。程序其他功能可自由添加。作業(yè)上交內容:可正確執(zhí)行的程序源代碼,程序開發(fā)文檔(主要介紹程序編寫過程、采用的算法、測試

16、的數(shù)據(jù)統(tǒng)計等)。題目二:基于機器視覺的硬幣計數(shù)系統(tǒng)基本要求:將多個硬幣(若干個一元、五角、一角)放置在攝像頭正下方(圖像采集背景自制),計算機能實時給出圖像中硬幣的數(shù)量,并實時顯示在程序界面上。程序其他功能可自由添加。作業(yè)上交內容:可正確執(zhí)行的程序源代碼,程序開發(fā)文檔(主要介紹程序編寫過程、采用的算法、測試的數(shù)據(jù)統(tǒng)計等)。題目三:基于機器視覺的實時測距系統(tǒng)基本要求:將一個特征比較明顯的物體放置在攝像頭正前方(目標物體自選),計算機能實時給出目標與攝像頭中心的距離(單位:毫米),并實時顯示在程序界面上。程序其他功能可自由添加。作業(yè)上交內容:可正確執(zhí)行的程序源代碼,程序開發(fā)文檔(主要介紹程序編寫過

17、程、采用的算法、測試的數(shù)據(jù)統(tǒng)計等)。題目四:基于機器視覺的實時定位系統(tǒng)基本要求:將一個物體(目標物體自選)放置A4紙上,移動物體,計算機能實時給出物體相對于A4紙張的位置(單位:毫米),坐標系以A4紙的一角為基準原點,兩個邊分別為X、Y軸,計算結果實時顯示在程序界面上。程序其他功能可自由添加。作業(yè)上交內容:可正確執(zhí)行的程序源代碼,程序開發(fā)文檔(主要介紹程序編寫過程、采用的算法、測試的數(shù)據(jù)統(tǒng)計等)。題目五:基于機器視覺的水果識別系統(tǒng)基本要求:將某種水果放置在攝像頭正下方(圖像采集背景自制,背景不能更換),程序能夠識別出是哪種水果(指定幾種水果中的一種,品種種類不小于5種),并將結果顯示在程序界面上。程序其他功能可自由添加。作業(yè)上交內容:可正確執(zhí)行的程序源代碼,程序開發(fā)文檔(主要介紹程序編寫過程、采用的算法、測試的數(shù)據(jù)統(tǒng)計等)。題目六:基于機器視覺的目標位姿測定系統(tǒng)基本要求:將一個圓珠筆(也可以選擇其他物體)放置在攝像頭正下方(圖像采集背景自制,背景不能更換),計算機能給出物體在圖像中的位姿(單位:像素),位姿包含兩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論