OpenCV入門教程_第1頁
OpenCV入門教程_第2頁
OpenCV入門教程_第3頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、(一) opencv 的安裝1. 下載最新版 opencv beta 5, 網(wǎng)址為color=#800080 m2. 下載完畢后直接點擊安裝。安裝完畢后打開 _make 文件夾下的.dsw(vc6)或.sln(),點擊project 下的 batch build,留意你的機子是 32 位的話,選重全部的win32debug 和 release(不要選擇 64 位的),點擊 rebuild。這樣,所需要的庫文件就生成了。下一步,要建你自己的文件。(ps:opencv beta 5 有一個bug,建立的時候需要改一個注釋注錯了的文件)3. 打開vc6 或 ,新建一工程(win32console,

2、win32project, mfc 都可以,取決于你的習慣)4. 配置你自己的工程對于 vc6: project à settings àall configurationsc/c+標簽àcategory 中選擇prepreocessor à additional include directories 項,輸入以“,”分開的相對路徑(留意相對路徑的格式與你的opencv 文件夾與你的工程文件夾相對位置有關(guān)),如我的工程建立在opencv 的名目下,則我可以這樣設(shè)置相對路徑:.cvauxinclude,.cxcoreinclude,.cvinclude,

3、.otherlibshighgui, .otherlibscvcaminclude ;固然,也可以輸入確定路徑如 c:program filesopencvcvincludelink 標簽 à category 中選擇 general àobject/library modules, 輸入以空格分開的cvd.lib highguid.lib cvauxd.lib cxcored.lib cvcamd.liblink 標簽 à category 中選擇 input àobject/library modules, 輸入以空格分開的cvd.lib highg

4、uid.lib cvauxd.lib cxcored.lib cvcamd.liblink 標簽 à category 中選擇 input àadditional library path, 輸入包含lib 庫的相對路徑或確定路徑,我的工程相對路徑設(shè)置為 .lib設(shè)置完以上點擊確定。對于v: projectàpropertiesàall configurationsc/c+àadditional include directories à 每行分開的相對路徑或確定路徑,如我的工程里這樣設(shè)置.cvinclude.cvauxinclude

5、.highguiinclude.otherlibshighgui.otherlibscv camincludelinker à general àadditional library directories: .liblinkeràinputàadditional dependencies: cv.lib cxcore.libcvaux.libcvcam.lib highgui.lib (每行一個)設(shè)置完以上點擊確定。5. 加入opencv 的工程到你的工程里并設(shè)置依靠關(guān)系vc6: projectàinsert project into wor

6、kspace àcvcv.dsp同樣加入cvaux.dsp, cxcore.dsp, highgui.dspprojectàdependencies: cv 選擇 cxcore; cvaux 選擇cv,cxcore; highgui 選擇cxcore; 你的工程選擇全部v fileàadd project à existing projectàcvcv.vcproj同樣加入cvaux.vcproj, cxcore.vcproj, highgui.vcproj在 solution explorer 中,鼠標右擊 solution your pro

7、ject (5 projects)àproperties 中設(shè)置依靠關(guān)同,同vc6(二)opencv 簡潔使用入門這樣就配置成功了,你可以使用opencv 里。下面簡潔介紹一些opencv 簡潔的圖像操作的例子。掛念初學者入門。在使用時,只要把頭文件包括進來就可以直接使用了。#include “cv.h”#include “highgui.h” (具體每個庫中的內(nèi)容,可參閱opencv 手冊)1. 打開圖像/打開圖像文件,成功返回 iplimage*圖像指針,否則返回 null iplimage* winapi imgfileopen()iplimage* pimg = 0; /聲明

8、 iplimage 指針cstring filename = “;/窗口對話窗體的文件屬性static char szfilter = “圖像文件格式(*.bmp) |*.bmp|jpg file format (*.jpg)|*.jpg|tif file format(*.tif) |*.tif|“;/打開文件對話窗口cfiledialog opendlg( true, null, null/*lastfilepath*/, ofn_hidereadonly | ofn_explorer, szfilter, null );opendlg.m_ofn.lpstrtitle = “open b

9、mp,jpg and tif files“;/從文件對話窗口中打開圖像if(opendlg.domodal()=idok)filename = opendlg.getpathname(); /獲得文件名elsereturn null;/圖像文件成功打開pimg = cvloadimage(filename, 0);/返回 return pimg;2. 假如把上面打開的圖像顯示出來,則可以這樣調(diào)用:iplimage* popenimg = imgfileopen(); /打開圖像cstring srcwinlabel = “source image”;/窗體 titleif(popenimg)/

10、假如成功打開則顯示cvnamedwindow(srcwinlabel, 1); /創(chuàng)建窗體cvshowimage(srcwinlabel, popenimg); /顯示圖像cvwaitkey(0);/等待按鍵cvreleaseimage(&popenimg); cvdestroywindow( srcwinlabel );/銷毀窗口3. 一些常用操作如角點檢測:bool winapi findcorner(iplimage* srcimg1, double qualitylevel, double mindistance)/定義循環(huán)變得與檢測角點數(shù)量 inti, cornercount

11、= max_corners;/定義iplimage 指針圖像iplimage* eigimage1 = 0;iplimage* tempimage1 = 0; iplimage* smoothimg1 = 0; iplimage* grayimg1 = 0;/初始化,安排空間/浮點格式eigimage1= cvcreateimage(cvgetsize(srcimg1), ipl_depth_32f, 1); tempimage1 = cvcreateimage(cvgetsize(srcimg1), ipl_depth_32f, 1);/灰度單通道格式smoothimg1 = cvcreat

12、eimage(cvgetsize(srcimg1), ipl_depth_8u, 1); grayimg1= cvcreateimage(cvgetsize(srcimg1), ipl_depth_8u, 1);/格式轉(zhuǎn)換:轉(zhuǎn)換成灰度圖像if(srcimg1->nchannels !=1)cvcvtcolor(srcimg1, grayimg1, cv_bgr2gray);elsecvcopy(srcimg1, grayimg1);/啟用高斯濾波,平滑圖像/cvsmooth(grayimg1,smoothimg1,cv_gaussian, 9, 9);cvcopy(grayimg1, s

13、moothimg1); /不平滑時把圖像 copy 到 smoothimg1,以便后面處理/角點cvgoodfeaturestotrack(smoothimg1, eigimage1, tempimage1, corners, &cornercount, qualitylevel, mindistance, 0);/子像素極角點cvfindcornersubpix(smoothimg1, corners, cornercount, cvsize(5,5), cvsize(-1,-1), cvtermcriteria(cv_termcrit_iter|cv_termcrit_eps, 1

14、00, 0.1) );/ draw circles at each corner location in the gray image and/ print out a list the corners畫出全部角點if(cornercount > 0)for (i=0; i<cornercount; i+)cvcircle(srcimg1, cvpoint(int)(cornersi.x), (int)(cornersi.y), 6, cv_rgb(255,0,0), 2, cv_aa, 0);/創(chuàng)建窗體,以便顯示標記出角點的圖像cvnamedwindow( “corners of

15、 image“, 1);/顯示標記圖像cvshowimage( “corners of image“, srcimg1 );/等待按鍵cvwaitkey(0);/銷毀窗體 cvdestroywindow(“corners of image“);/釋放空間cvreleaseimage(&eigimage1);cvreleaseimage(&tempimage1); cvreleaseimage(&smoothimg1); cvreleaseimage(&grayimg1);/showimg1/返回return true;4. hough 變換檢測圓bool win

16、api houghcircle(iplimage* img)if(img = null)return false;iplimage* gray = cvcreateimage( cvgetsize(img), 8, 1 ); cvmemstorage* storage = cvcreatememstorage(0);/轉(zhuǎn)換成灰度圖像if(img->nchannels != 1)cvcvtcolor( img, gray, cv_bgr2gray ); elsecvcopy(img, gray);/平滑化cvsmooth( gray, gray, cv_gaussian, 9, 9 );/

17、 hough 變換求圓/ cvseq* circles = cvhoughcircles( gray, storage, cv_hough_gradient, 2, gray->height/4, 200, 100 );cvseq* circles = cvhoughcircles( gray, storage, cv_hough_gradient, 2, gray->height/4, 250, 55 );/ 畫出識別出的圓int i;for( i = 0; i < circles->total; i+ )float* p = (float*)cvgetseqelem

18、( circles, i );cvcircle( img, cvpoint(cvround(p0),cvround(p1), cvround(p2), cv_rgb(255,0,0), 3, 8, 0 );/cvcircle( img, cvpoint(cvround(p0),cvround(p1), 100, cv_rgb(255,0,0), 3, 8,0 );/ 窗體顯示cvnamedwindow(“win“, 1);/ 畫像表示cvshowimage(“win“, img);/ 等待按鍵cvwaitkey(0);/ 釋放cvreleaseimage(&img); cvreleas

19、eimage(&gray); cvdestroywindow(“win“);return true;5. 再比如輪廓檢測/求輪廓/ int levels = 3;/cvseq* contours = 0;/ iplimage* imgcontour;/ int upper= 80;int lower= 10;cvmemstorage * storagecontours;void on_trackbarcontour(int pos)/定義變量iplimage* cnt_img;cvseq* _contours; int _levels;/安排空間、初始化cnt_img = cvcrea

20、teimage( cvgetsize(imgcontour), 8, 3 );_contours = contours;_levels = levels - 3; cvzero( cnt_img );/畫輪廓cvdrawcontours( cnt_img, _contours, cv_rgb(255,0,0), cv_rgb(0,255,0),_levels, 1, cv_aa, cvpoint(0,0) );/顯示輪廓圖像cvshowimage( “contours“, cnt_img );/釋放空間cvreleaseimage( &cnt_img );void winapi fin

21、dcontour( iplimage* pimg )/定義指針變量cvmemstorage* storage;iplimage* img;/初始化安排空間storage = cvcreatememstorage(0);img = cvcreateimage( cvgetsize(pimg), ipl_depth_8u, 1 ); imgcontour = cvcreateimage(cvgetsize(pimg), ipl_depth_8u, 3);/copy 圖像,便于on_trackbarcontour 中操作cvcopy(pimg, imgcontour);/轉(zhuǎn)換成灰度圖像if(pimg

22、->nchannels != 1)cvcvtcolor(pimg, img, cv_bgr2gray);elsecvcopy(pimg, img);/邊緣提取cvcanny(img, img, (float)33, (float)33*3, 3);/0.0, 100, 5);/閾值分割/cvthreshold( img, img, 150, 255, cv_thresh_binary );/創(chuàng)建窗體顯示要操作的圖像cvnamedwindow( “image“, 1 ); cvshowimage( “image“, img );/找輪廓/cv_retr_external,cv_chain_approx_simplecvfindcontours( img, storage, &contours, sizeof(cv

溫馨提示

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

評論

0/150

提交評論