




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1利用OpenCV進(jìn)行人臉檢測人臉檢測程序主要完成3部分功能,即加載分類器、加載待檢測圖象以及檢測并標(biāo)示。本程序使用OpenCV中提供的“haarcascade_frontalface_alt.xml”文件存儲(chǔ)的目標(biāo)檢測分類,用cvLoad函數(shù)載入后,進(jìn)行強(qiáng)制類型轉(zhuǎn)換。OpenCV中提供的用于檢測圖像中目標(biāo)的函數(shù)是cvHaarDetectObjects,該函數(shù)使用指針對某目標(biāo)物體(如人臉)訓(xùn)練的級聯(lián)分類器在圖象中找到包含目標(biāo)物體的矩形區(qū)域,并將這些區(qū)域作為一序列的矩形框返回。分類器在使用后需要被顯式釋放,所用的函數(shù)為cvReleaseHaarClassifierCascade。這些函數(shù)原型請參
2、看有關(guān)OpenCV手冊。2程序?qū)崿F(xiàn)1)新建一個(gè)Visual C+ MFC項(xiàng)目,取名為“FaceDetection”,選擇應(yīng)用程序類型為“單文檔”。將菜單中多余的項(xiàng)去掉,并添加一項(xiàng)“人臉檢測”,其ID為“ID_FaceDetected”,并生成該菜單項(xiàng)的消息映射函數(shù)。2)在“FaceDetectionView.h”頭文件中添加以下灰底色部分程序代碼:/南京森林公安高等??茖W(xué)校 江林升/ FaceDetectionView.h : CFaceDetectionView 類的接口#pragma once#include "cv.h"#include "highgui.h
3、"class CFaceDetectionView : public CViewprotected: / 僅從序列化創(chuàng)建 CFaceDetectionView(); DECLARE_DYNCREATE(CFaceDetectionView)/ 屬性public: CFaceDetectionDoc* GetDocument() const; CvHaarClassifierCascade* cascade;/特征器分類 CvMemStorage* storage; void detect_and_draw( IplImage* img ); IplImage* src; /載入的圖像
4、3)在“FaceDetectionView.cpp”文件中添加以下灰底色部分程序代碼:/ FaceDetectionView.cpp : CFaceDetectionView 類的實(shí)現(xiàn)#include "stdafx.h"#include "FaceDetection.h"#include "FaceDetectionDoc.h"#include "FaceDetectionView.h"#include <string>#ifdef _DEBUG#define new DEBUG_NEW#endif/
5、 CFaceDetectionViewIMPLEMENT_DYNCREATE(CFaceDetectionView, CView)BEGIN_MESSAGE_MAP(CFaceDetectionView, CView) ON_COMMAND(ID_FaceDetected, &CFaceDetectionView:OnFacedetected)END_MESSAGE_MAP()/ CFaceDetectionView 構(gòu)造/析構(gòu)const char* cascade_name ="haarcascade_frontalface_alt.xml"/分類器的名稱/ CF
6、aceDetectionView 消息處理程序void CFaceDetectionView:OnFacedetected() /人臉檢測菜單響應(yīng)事件 / TODO: 在此添加命令處理程序代碼 CString fileName; /打開文件對話窗口 CFileDialog OpenDlg( TRUE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR, L"圖像文件格式JPG file format (*.jpg)|*.jpg|(*.bmp) |*.bmp|", NULL); /從文件對
7、話窗口中打開圖像 if(OpenDlg.DoModal()!=IDOK) return; /獲得文件名 fileName = OpenDlg.GetPathName(); /必要的類型轉(zhuǎn)換 std:string tempName = (LPCSTR)CStringA(fileName); const char* tmp = tempName.c_str(); /打開文件,若失敗則返回 if( (src = cvLoadImage(tmp, CV_LOAD_IMAGE_ANYCOLOR) = 0 ) return; /加載(分類器層疊)訓(xùn)練庫 cascade = (CvHaarClassifie
8、rCascade*)cvLoad( cascade_name, 0, 0, 0 ); /加載不成功則顯示錯(cuò)誤訊息,并退出 if(cascade) storage = cvCreateMemStorage(0); cvNamedWindow( "人臉檢測", CV_WINDOW_AUTOSIZE ); /創(chuàng)建窗口 /如果圖片存在則分析并顯示結(jié)果,否則退出程序 if(src) detect_and_draw(src); /調(diào)用人臉檢與標(biāo)示事件 cvReleaseImage(&src); cvReleaseMemStorage( &storage ); else
9、&, nbsp; AfxMessageBox(L"無法加載分類器,請確認(rèn)后重試!"); cvReleaseHaarClassifierCascade( &cascade );void CFaceDetectionView:detect_and_draw(IplImage *img) /人臉檢與標(biāo)示事件 static CvScalar color = 0,0,255;/用于設(shè)置標(biāo)示圖像中人臉的顏色 double scale = 1.3; IplImage* gray = cvCreateImage( cvSize(img->width,img->h
10、eight), 8, 1 ); IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),cvRound (img->height/scale),8,1 ); int i; cvCvtColor( img, gray, CV_BGR2GRAY ); cvResize( gray, small_img, CV_INTER_LINEAR ); cvEqualizeHist( small_img, small_img ); cvClearMemStorage( storage ); if( cascad
11、e ) /檢測人臉 CvSeq* faces = cvHaarDetectObjects( small_img, cascade, storage, 1.1, 2, 0, cvSize(30, 30) ); for( i = 0; i < (faces ? faces->total : 0); i+ ) CvRect* r = (CvRect*)cvGetSeqElem( faces, i ); CvPoint center; int radius; center.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, color0, 3, 8, 0 ); cvShowImage( "人臉檢測", img ); cvReleaseImage( &gray ); cvReleaseImage( &small_img );需要注意的是,本程序運(yùn)行時(shí)應(yīng)將分類器文件置于程序目錄下,如果運(yùn)行的是生成的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公眾參與視角下2025年環(huán)境評價(jià)機(jī)制優(yōu)化與環(huán)境保護(hù)產(chǎn)業(yè)發(fā)展研究
- 濟(jì)寧醫(yī)學(xué)院《中藥生物技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 山西職業(yè)技術(shù)學(xué)院《金融統(tǒng)計(jì)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川長江職業(yè)學(xué)院《施工組織與概預(yù)算》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025屆湖北省武漢市武昌區(qū)省水二中學(xué)數(shù)學(xué)七上期末調(diào)研模擬試題含解析
- 廣東梅州市豐順縣2024-2025學(xué)年七年級數(shù)學(xué)第一學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 公路貨運(yùn)行業(yè)數(shù)字化轉(zhuǎn)型與效率提升的綠色物流發(fā)展路徑報(bào)告001
- 公路貨運(yùn)行業(yè)數(shù)字化轉(zhuǎn)型對物流行業(yè)可持續(xù)發(fā)展的影響報(bào)告
- 商業(yè)貸款催收技巧全解析
- 清遠(yuǎn)社區(qū)消防培訓(xùn)課件
- 長沙梅溪湖國際新城產(chǎn)業(yè)組織與西區(qū)土地一級開發(fā)
- GB/T 3768-2017聲學(xué)聲壓法測定噪聲源聲功率級和聲能量級采用反射面上方包絡(luò)測量面的簡易法
- 變壓器培訓(xùn)資料
- 斷絕子女關(guān)系協(xié)議書模板(5篇)
- 村規(guī)民約范文大全三篇村規(guī)民約范文大全
- 赤水市轄區(qū)內(nèi)楓溪河(風(fēng)溪河)、寶沅河(寶源河)、丙安河
- 胸腔積液PPT.ppt 課件
- 斷指再植術(shù)后的切口
- 曾國藩為官之道
- 貴州省風(fēng)玫瑰圖資料
- 供應(yīng)商質(zhì)量管理體系審核表
評論
0/150
提交評論