下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、OpenCV學(xué)習(xí)筆記3:找出人臉,同時(shí)比較兩張圖片中的人臉相似度分類:OpenCV2012-11-12 18:505394人閱讀評(píng)論(4)收藏舉報(bào) 終于到了有實(shí)際應(yīng)用的功能了,有2張圖片,里面各有一個(gè)人臉,我的目的是比較這兩個(gè)人臉的相似度,這里用到了facedetect的功能,還有圖像轉(zhuǎn)換,圖像剪切,以及直方圖的比較。具體流程是: 1。分別用facedetect功能將兩張圖片中的人臉檢測(cè)出來(lái) 2。將人臉部分的圖片剪切出來(lái),存到兩張只有人臉的圖片里。 3。將這兩張人臉圖片轉(zhuǎn)換成單通道的圖像 4。使用直方圖比較這兩張單通道的人臉圖像,得出相似度。 這里對(duì)圖的要求還是比較高的,光線和姿勢(shì)不能有差別,
2、臉的垂直或者左右角度偏差就會(huì)影響比較,但和兩張圖片的大小關(guān)系不大,本人覺(jué)得較適合于證件照的對(duì)比。下面是代碼,其中haarcascade_frontalface_alt.xml是opencv里facedetect例子用的樣本。 比較的是srcImage和targetImage對(duì)應(yīng)的文件.還有下面是IplImage和Mat混用,純當(dāng)熟悉這兩個(gè)類了。cppview plaincopy1. cppview plaincopy1. cppview plaincopy1. #includeopencv/cv.hpp2. #includeopencv2/objdetect/objdetect.hpp3. #
3、includeopencv2/highgui/highgui.hpp4. #includeopencv2/imgproc/imgproc.hpp5. 6. #include7. #include8. 9. usingnamespacestd;10. usingnamespacecv;11. 12. StringcascadeName=D:OpenCV-2.4.2datahaarcascadeshaarcascade_frontalface_alt.xml;13. 14. IplImage*cutImage(IplImage*src,CvRectrect)15. cvSetImageROI(sr
4、c,rect);16. IplImage*dst=cvCreateImage(cvSize(rect.width,rect.height),17. src-depth,18. src-nChannels);19. 20. cvCopy(src,dst,0);21. cvResetImageROI(src);22. returndst;23. 24. 25. IplImage*detect(Mat&img,CascadeClassifier&cascade,doublescale)26. 27. inti=0;28. doublet=0;29. vectorfaces;30. Matgray,s
5、mallImg(cvRound(img.rows/scale),cvRound(img.cols/scale),CV_8UC1);31. 32. cvtColor(img,gray,CV_BGR2GRAY);33. resize(gray,smallImg,smallImg.size(),0,0,INTER_LINEAR);34. equalizeHist(smallImg,smallImg);35. 36. t=(double)cvGetTickCount();37. cascade.detectMultiScale(smallImg,faces,38. 1.3,2,CV_HAAR_SCAL
6、E_IMAGE,39. Size(30,30);40. t=(double)cvGetTickCount()-t;41. printf(detectiontime=%gmsn,t/(double)cvGetTickFrequency()*1000.);42. for(vector:const_iteratorr=faces.begin();r!=faces.end();r+,i+)43. 44. IplImage*temp=cutImage(&(IplImage(img),cvRect(r-x,r-y,r-width,r-height);45. returntemp;46. 47. 48. r
7、eturnNULL;49. 50. /畫直方圖用51. intHistogramBins=256;52. floatHistogramRange12=0,255;53. float*HistogramRange1=&HistogramRange10;54. intCompareHist(IplImage*image1,IplImage*image2)55. 56. IplImage*srcImage;57. IplImage*targetImage;58. if(image1-nChannels!=1)59. srcImage=cvCreateImage(cvSize(image1-width
8、,image1-height),image1-depth,1);60. cvCvtColor(image1,srcImage,CV_BGR2GRAY);61. else62. srcImage=image1;63. 64. 65. if(image2-nChannels!=1)66. targetImage=cvCreateImage(cvSize(image2-width,image2-height),srcImage-depth,1);67. cvCvtColor(image2,targetImage,CV_BGR2GRAY);68. else69. targetImage=image2;
9、70. 71. 72. CvHistogram*Histogram1=cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange);73. CvHistogram*Histogram2=cvCreateHist(1,&HistogramBins,CV_HIST_ARRAY,HistogramRange);74. 75. cvCalcHist(&srcImage,Histogram1);76. cvCalcHist(&targetImage,Histogram2);77. 78. cvNormalizeHist(Histogram1,1)
10、;79. cvNormalizeHist(Histogram2,1);80. 81. /CV_COMP_CHISQR,CV_COMP_BHATTACHARYYA這兩種都可以用來(lái)做直方圖的比較,值越小,說(shuō)明圖形越相似82. printf(CV_COMP_CHISQR:%.4fn,cvCompareHist(Histogram1,Histogram2,CV_COMP_CHISQR);83. printf(CV_COMP_BHATTACHARYYA:%.4fn,cvCompareHist(Histogram1,Histogram2,CV_COMP_BHATTACHARYYA);84. 85. 86.
11、 /CV_COMP_CORREL,CV_COMP_INTERSECT這兩種直方圖的比較,值越大,說(shuō)明圖形越相似87. printf(CV_COMP_CORREL:%.4fn,cvCompareHist(Histogram1,Histogram2,CV_COMP_CORREL);88. printf(CV_COMP_INTERSECT:%.4fn,cvCompareHist(Histogram1,Histogram2,CV_COMP_INTERSECT);89. 90. cvReleaseHist(&Histogram1);91. cvReleaseHist(&Histogram2);92. i
12、f(image1-nChannels!=1)93. cvReleaseImage(&srcImage);94. 95. if(image2-nChannels!=1)96. cvReleaseImage(&targetImage);97. 98. return0;99. 100. StringsrcImage=d:ldh1.jpg;101. StringtargetImage=d:ldh5.jpg;102. intmain(intargc,char*argv)103. 104. CascadeClassifiercascade;105. namedWindow(image1);106. nam
13、edWindow(image2);107. if(!cascade.load(cascadeName)108. 109. return-1;110. 111. 112. MatsrcImg,targetImg;113. IplImage*faceImage1;114. IplImage*faceImage2;115. srcImg=imread(srcImage);116. targetImg=imread(targetImage);117. faceImage1=detect(srcImg,cascade,1);118. if(faceImage1=NULL)119. return-1;120. 121. /cvSaveImage(d:face.jpg,faceImage1,0);122. faceImage2=detect(targetImg,cascade,1);123. if(faceImage2=NULL)124. return-1;125. 126. /cvSaveImage(d:face1.jpg,faceImage2,0);127
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 游戲美術(shù)教學(xué)課程設(shè)計(jì)
- 2024年智能門窗控制系統(tǒng)集成服務(wù)合同模板3篇
- 匯編接口 課程設(shè)計(jì)
- 醫(yī)療心理與情緒管理學(xué)生篇
- 2024年度擔(dān)保公司專用租賃資產(chǎn)擔(dān)保協(xié)議3篇
- 2024年度環(huán)保設(shè)備制造個(gè)人承包合同范本3篇
- 消防課程設(shè)計(jì)論文
- 托班律動(dòng)音樂(lè)課程設(shè)計(jì)
- 2024年度城市軌道交通擔(dān)保公司工程抵押擔(dān)保合同3篇
- 2024年二零二四年度大型客車買賣合同標(biāo)準(zhǔn)版3篇
- 2024-2025學(xué)年寒假致學(xué)生家長(zhǎng)的一封信(安全版)
- 人才引進(jìn)政策購(gòu)房合同模板
- 《兩用物項(xiàng)證》課件
- 《電梯維保規(guī)則》課件
- DB54T 0425.1-2024 公共數(shù)據(jù) 數(shù)據(jù)元規(guī)范 第一部分:總則
- 2024年高考政治選必二《法律與生活》重要知識(shí)問(wèn)題梳理總結(jié)
- 孕早期nt檢查課件
- 檢驗(yàn)科新進(jìn)人員崗前培訓(xùn)
- 小紅書種草營(yíng)銷師模擬題及答案(單選+多選+判斷)
- 浙江省杭州市2023-2024學(xué)年高一上學(xué)期1月期末英語(yǔ)試題 含解析
- 2024年家裝家居行業(yè)解決方案-淘天集團(tuán)
評(píng)論
0/150
提交評(píng)論