




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、編號: 數(shù)學(xué)與計算科學(xué)學(xué)院創(chuàng)新性實驗結(jié)題報告書實驗題目: 單張照片人臉檢測 實驗成績(教師填寫): 學(xué) 院: 數(shù)學(xué)與計算科學(xué)學(xué)院 專 業(yè): 信息與計算科學(xué) 學(xué)生姓名: 韓尚穎 1200710218 小組成員: 覃啟霞 1200710211 指導(dǎo)教師: 王東 2014 年 07月 25日摘 要: 人臉檢測在計算機(jī)視覺領(lǐng)域是一個很基礎(chǔ)性技術(shù),我們組使用了基于openCV的Viola-Jones分類算法的haar 分類器的剛性物體檢測技術(shù);首先,需要使用openCV的createsamples()和haartraining()函數(shù)來訓(xùn)練分類器,然后使用detect_and_draw()函數(shù)來進(jìn)行人臉
2、的檢測和標(biāo)記;本實驗是在windows環(huán)境下使用win32 API和VC實現(xiàn)了人臉檢測的基本功能。關(guān)鍵詞: 人臉檢測 openCV windows平臺 Viola-Jones分類算法 haar 分類器1、 實驗?zāi)康募爸饕獎?chuàng)新性點:1、熟悉和掌握openCV(open source computer vision library開源的計算機(jī)視覺庫),并通過它提供的一些集成函數(shù)來實現(xiàn)對照片或視頻的處理;2、實現(xiàn)照片的人臉檢測,并且我們又加入了調(diào)用攝像頭或者現(xiàn)成的視頻文件進(jìn)行人臉檢測;3、同時進(jìn)一步掌握了VC和win32編程的技巧和方法。二、實驗要求:1、 實現(xiàn)單張照片的人臉檢測和標(biāo)記;2、 熟悉怎
3、么使用Windows API函數(shù)設(shè)計窗口界面,實現(xiàn)人臉檢測功能;3、 了解Windows API 編程的方法與技能的; 4、 掌握VC和openCV的基礎(chǔ)知識;3、 實驗原理: 一.人臉檢測算法原理:Viola-Jones人臉檢測方法 該算法的主要特征: 1.提出積分圖像(integral image),從而可以快速計算Haar-like特征。 2.利用Adaboost學(xué)習(xí)算法進(jìn)行特征選擇和分類器訓(xùn)練,把弱分類器組 合成強分類器。 3.采用分類器級聯(lián)提高效率。 二.openCV檢測原理 因為openCV中已經(jīng)有預(yù)先訓(xùn)練好的一些物體識別文件(haar 分類器),所以我們組決定不在自己訓(xùn)練,因為這
4、需要大量的經(jīng)過處理的圖片,任務(wù)過去繁重。 第二步,我們使用detect_and_draw()函數(shù)來識別、標(biāo)記人臉,其中代碼函數(shù)中有一個顏色向量的數(shù)組colors,可以不同顏色標(biāo)記人臉;分類器在灰度圖上進(jìn)行檢測,所以RGB圖首先通過cvCvtClolor()轉(zhuǎn)化成灰度圖,還可以用cvResize()調(diào)整大小,然后通過cvEqualizeHist()進(jìn)行直方均衡;cvHaarDetectObjects()以不同的窗口掃描輸入的圖形尋找人臉,人臉檢測會有多次重復(fù),這里默認(rèn)3次,我們才認(rèn)為人臉確實存在,防止誤檢驗。主要步驟為: 1.加載分類器。 用cvLoad函數(shù)讀入xml格式的文件。 2.讀入待檢測
5、圖像。讀入圖片、視頻或者調(diào)用攝像頭采集。 3.檢測并標(biāo)示人臉,顯示人臉檢測數(shù)目和用時。四、實驗內(nèi)容與步驟(部分代碼): 1、首先,在VS2010平臺下建立win32 項目,設(shè)計基本對話框樣式和功能按鈕; (1)三個按鈕: btn0 = CreateWindow(TEXT("button"),TEXT("單張照片識別"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,40,40,100,30,hWnd,(HMENU)0,hInstance,NULL);btn1 = CreateWindow(TEXT("button"
6、;),TEXT("攝像識別"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,40,80,100,30,hWnd,(HMENU)1,hInstance,NULL);btn2 = CreateWindow(TEXT("button"),TEXT("視頻識別"),WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,40,120,100,30,hWnd,(HMENU)2,hInstance,NULL); (2)顯示人臉識別數(shù)和用時: TextOut(hdc,250,180,TEXT("人臉識別
7、用時(納秒):"),11);TextOut(hdc, 400,180, szText1, wsprintf(szText1, TEXT("%d"), ti);TextOut(hdc,250,200,TEXT("人臉識別個數(shù):"),7);TextOut(hdc, 380,200, szText1, wsprintf(szText1, TEXT("%d"), fa); 2、編寫對應(yīng)按鈕的功能函數(shù),加入openCV函數(shù);const char* cascade_name ="haarcascade_frontalface_
8、alt2.xml"/Haar分類器/* "haarcascade_profileface.xml"*/(1)人臉檢測標(biāo)記函數(shù)void detect_and_draw( IplImage* img )/人臉檢測標(biāo)記函數(shù)static CvScalar colors = /一般用來存放像素值(不一定是灰度值哦)的0,0,255,/畫圓的那個線條顏色0,128,255,0,255,255,0,255,0,255,128,0,255,255,0,255,0,0,255,0,255;double scale = 1.3;IplImage* gray = cvCreateIma
9、ge( cvSize(img->width,img->height), 8, 1 );IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),/對一個double型的數(shù)進(jìn)行四舍五入,并返回一個整型數(shù)!cvRound (img->height/scale), 8, 1 );/縮放int i;cvCvtColor( img, gray, CV_BGR2GRAY );/顏色空間轉(zhuǎn)換函數(shù),可以實現(xiàn)RGB顏色向HSV,HSI等顏色空間的轉(zhuǎn)換,也可以轉(zhuǎn)換為灰度圖像。cvResize( gray,
10、 small_img, CV_INTER_LINEAR );/調(diào)整3通道圖像(如RGB圖像)和單通道圖像的大小。cvEqualizeHist( small_img, small_img );/用來使灰度圖象直方圖均衡化cvClearMemStorage( storage );if( cascade )double t = (double)cvGetTickCount();/獲取操作系統(tǒng)啟動所經(jīng)過(elapsed)的毫秒數(shù)CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, /用來檢測圖像中的目標(biāo) 1.1, 2, 0/*
11、CV_HAAR_DO_CANNY_PRUNING*/,/利用Canny邊緣檢測器cvSize(20, 20) );t = (double)cvGetTickCount() - t;ti=(t/(double)cvGetTickFrequency()/1000000.0);fa=faces->total;for( i = 0; i < (faces ? faces->total : 0); i+ )CvRect* r = (CvRect*)cvGetSeqElem( faces, i );/返回索引指定的元素指針CvPoint center;int radius;center.
12、x = cvRound(r->x + r->width*0.5)*scale);center.y = cvRound(r->y + r->height*0.5)*scale);radius = cvRound(r->width + r->height)*0.25*scale);cvCircle( img, center, radius, colorsi%8, 3, 8, 0 ); /畫圓標(biāo)記cvWaitKey(0);cvShowImage( "人臉檢測結(jié)果", img );cvReleaseImage( &gray );cvRel
13、easeImage( &small_img );/將TCHAR轉(zhuǎn)為char /*tchar是TCHAR類型指針,*_char是char類型指針 void TcharToChar (const TCHAR * tchar, char * _char) int iLength ; /獲取字節(jié)長度 iLength = WideCharToMultiByte(CP_ACP, 0, tchar, -1, NULL, 0, NULL, NULL); /將tchar值賦給_char WideCharToMultiByte(CP_ACP, 0, tchar, -1, _char, iLength, N
14、ULL, NULL); (2)照片識別void picturetext (TCHAR a)/照片識別 CHAR b260;TcharToChar(a,b);/CvCapture* capture = 0;/視頻攝像頭IplImage *frame, *frame_copy = 0;/圖形結(jié)構(gòu)cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 ); /導(dǎo)入分類器storage = cvCreateMemStorage(0); /創(chuàng)建內(nèi)存空間 cvNamedWindow( "result", 1 )
15、; const char* filename = (char*)b; IplImage* image = cvLoadImage( filename, 1 ); if( image ) detect_and_draw( image ); cvWaitKey(0); cvReleaseImage( &image ); else /* assume it is a text file containing the list of the image filenames to be processed - one per line */ FILE* f = fopen( filename,
16、"rt" ); if( f ) char buf1000+1; while( fgets( buf, 1000, f ) ) int len = (int)strlen(buf); while( len > 0 && isspace(buflen-1) )/檢查參數(shù)c是否為空格字符,也就是判斷是否為空格(' ')、水平定位字符 /('t')、歸位鍵('r')、換行('n')、垂直定位字符('v')或翻頁('f')的情況 len-; buflen = '
17、;0' image = cvLoadImage( buf, 1 ); if( image ) detect_and_draw( image ); cvWaitKey(0); cvReleaseImage( &image ); fclose(f); cvDestroyWindow("result");(3)視頻文件和攝像頭識別我們組在照片識別的基礎(chǔ)上進(jìn)一步實現(xiàn)了攝像頭捕獲視頻和讀取視頻文件(*.avi)的人臉檢測:void camera_vedio()/視頻文件和攝像頭識別CvCapture* capture = 0;/視頻攝像頭/IplImage *fram
18、e, *frame_copy = 0;/圖形結(jié)構(gòu)cascade = (CvHaarClassifierCascade*)cvLoad( cascade_name, 0, 0, 0 );storage = cvCreateMemStorage(0);cvNamedWindow( "result", 1 );capture = cvCaptureFromCAM(0);/初始化從攝像頭中獲取視頻capture = cvCaptureFromAVI( input_name ); /從視頻文件中捕獲視頻幀。*/ /二選一既可做識別 for(;)if( !cvGrabFrame( ca
19、pture )/從攝像頭或者視頻文件中抓取幀 break;frame = cvRetrieveFrame( capture );/取回由函數(shù)cvGrabFrame抓取的圖像。if( !frame )break;if( !frame_copy )frame_copy = cvCreateImage( cvSize(frame->width,frame->height),IPL_DEPTH_8U, frame->nChannels );if( frame->origin = IPL_ORIGIN_TL )cvCopy( frame, frame_copy, 0 );/前到后
20、 elsecvFlip( frame, frame_copy, 0 );/直接將圖像采集卡采集的圖像cvShowImage出來的是反著的圖像,/在顯示圖像之前使用cvFlip()函數(shù)將圖像翻轉(zhuǎn)一下/垂直翻轉(zhuǎn)圖像(flip_mode = 0)用于 頂-左和底-左圖像結(jié)構(gòu)的轉(zhuǎn)換, 主要用于WIN32系統(tǒng)下的視頻操作處理.detect_and_draw( frame_copy );/人臉檢測if( cvWaitKey( 10000 ) = 27 ) /ESC鍵退出 break;cvReleaseImage( &frame_copy );cvReleaseCapture( &captu
21、re );cvDestroyWindow("result"); 3、選擇檢測圖片、視頻文件、調(diào)用攝像頭獲取視頻文件進(jìn)行人臉檢測。5、 實驗過程原始記錄(數(shù)據(jù),圖表,計算等): 主頁面:1.照片識別結(jié)果:在這兩張測試圖片中,人臉檢測準(zhǔn)確率達(dá)到了100%。2.視頻文件識別結(jié)果:在視頻測試中準(zhǔn)確率也達(dá)到了100%。3. 調(diào)用攝像頭識別結(jié)果:(1) .在光線明亮處識別結(jié)果:準(zhǔn)確識別,沒有誤差。(2).在光線較暗處識別結(jié)果:準(zhǔn)確無誤。六、實驗結(jié)果分析或總結(jié): 我們小組經(jīng)過不懈的努力,最終實現(xiàn)了人臉檢測的功能,我們知道Viola-Jones分類算法并不限于人臉檢測,它適應(yīng)于其他外表有區(qū)別的(接近剛性的)物體的檢測。但是,人的側(cè)臉和車的斜視角檢測效果不夠理想,主要是因為這些視角在模板中有很多變化,而“塊特征”無法很好地處理這些變化。通過本次實驗,我們熟悉和掌握openCV(開源的計算機(jī)視覺庫),并進(jìn)一步增強了c語言和win32 編程能力;近幾年,計算機(jī)視覺領(lǐng)域發(fā)展迅速,對一
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標(biāo)準(zhǔn)技術(shù)服務(wù)合同書
- 生產(chǎn)工藝承包經(jīng)營合同
- 股權(quán)轉(zhuǎn)讓協(xié)議書投資協(xié)議書
- 戶外活動合作協(xié)議新
- 美妝店鋪委托經(jīng)營合同(3篇)
- 住宅房買賣合同書
- 墊資工程協(xié)議合同共
- 教育行業(yè)課外活動安全免責(zé)協(xié)議
- 三農(nóng)產(chǎn)品網(wǎng)絡(luò)營銷實戰(zhàn)方案
- 電子通信基站裝飾工程施工合同
- 青島科技大學(xué)成人大?!豆ど唐髽I(yè)管理實訓(xùn)報告》
- 基于單片機(jī)實現(xiàn)滯回比較器算法
- 4s店服務(wù)總監(jiān)崗位職責(zé)4篇
- PHWYT 一體式風(fēng)速風(fēng)向傳感器 說明書
- 湯臣一品推廣策略
- 低鉀血癥最新版本最新課件
- 2023年陜西延長石油礦業(yè)有限責(zé)任公司招聘筆試題庫及答案解析
- YY/T 1792-2021熒光免疫層析分析儀
- GB/T 39235-2020豬營養(yǎng)需要量
- GB/T 32691-2016汽車空調(diào)電磁離合器
- 染廠公司簡介(4個范本)
評論
0/150
提交評論