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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

5、.highguiinclude.otherlibshighgui.otherlibscv camincludelinker à general àadditional library directories: .liblinkeràinputàadditional dependencies: cv.lib cxcore.libcvaux.libcvcam.lib highgui.lib (每行一個(gè))設(shè)置完以上點(diǎn)擊確定。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 中,鼠標(biāo)右擊 solution your pro

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

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

9、mp,jpg and tif files“;/從文件對(duì)話窗口中打開圖像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. 一些常用操作如角點(diǎn)檢測(cè):bool winapi findcorner(iplimage* srcimg1, double qualitylevel, double mindistance)/定義循環(huán)變得與檢測(cè)角點(diǎn)數(shù)量 inti, cornercount

11、= max_corners;/定義iplimage 指針圖像iplimage* eigimage1 = 0;iplimage* tempimage1 = 0; iplimage* smoothimg1 = 0; iplimage* grayimg1 = 0;/初始化,安排空間/浮點(diǎn)格式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); /不平滑時(shí)把圖像 copy 到 smoothimg1,以便后面處理/角點(diǎn)cvgoodfeaturestotrack(smoothimg1, eigimage1, tempimage1, corners, &cornercount, qualitylevel, mindistance, 0);/子像素極角點(diǎn)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畫出全部角點(diǎn)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)建窗體,以便顯示標(biāo)記出角點(diǎn)的圖像cvnamedwindow( “corners of

15、 image“, 1);/顯示標(biāo)記圖像cvshowimage( “corners of image“, srcimg1 );/等待按鍵cvwaitkey(0);/銷毀窗體 cvdestroywindow(“corners of image“);/釋放空間cvreleaseimage(&eigimage1);cvreleaseimage(&tempimage1); cvreleaseimage(&smoothimg1); cvreleaseimage(&grayimg1);/showimg1/返回return true;4. hough 變換檢測(cè)圓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 );/ 畫出識(shí)別出的圓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. 再比如輪廓檢測(cè)/求輪廓/ 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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論