资源简介
OpenCV识别出两张图片的人脸,并比较出两张人脸的相似度,并给出相似值。
包含完整的工程文件,可立即运行!!!
用facedetect功能将两张图片中的人脸检测出来
将人脸部分的图片剪切出来,存到两张只有人脸的图片里。
将这两张人脸图片转换成单通道的图像
使用直方图比较这两张单通道的人脸图像,得出相似度。
代码片段和文件信息
// opencvtest.cpp : 定義主控台應用程式的進入點。
#include “stdafx.h“
#include “opencv\cv.hpp“
#include “opencv2\objdetect\objdetect.hpp“
#include “opencv2\highgui\highgui.hpp“
#include “opencv2\imgproc\imgproc.hpp“
#include
#include
using namespace std;
using namespace cv;
String cascadeName = “D:\\OpenCV\\data\\haarcascades\\haarcascade_frontalface_alt.xml“;
IplImage* cutImage(IplImage* src CvRect rect) {
cvSetImageROI(src rect);
IplImage* dst = cvCreateImage(cvSize(rect.width rect.height)
src->depth
src->nChannels);
cvCopy(srcdst0);
cvResetImageROI(src);
return dst;
}
IplImage* detect( Mat& img CascadeClassifier& cascade double scale)
{
int i = 0;
double t = 0;
vector faces;
Mat gray smallImg( cvRound (img.rows/scale) cvRound(img.cols/scale) CV_8UC1 );
cvtColor( img gray CV_BGR2GRAY );
resize( gray smallImg smallImg.size() 0 0 INTER_LINEAR );
equalizeHist( smallImg smallImg );
t = (double)cvGetTickCount();
cascade.detectMultiScale( smallImg faces
1.3 2 CV_HAAR_SCALE_IMAGE
Size(30 30) );
t = (double)cvGetTickCount() - t;
printf( “detection time = %g ms\n“ t/((double)cvGetTickFrequency()*1000.) );
for( vector::const_iterator r = faces.begin(); r != faces.end(); r++ i++ )
{
IplImage* temp = cutImage(&(IplImage(img)) cvRect(r->x r->y r->width r->height));
return temp;
}
return NULL;
}
//画直方图用
int HistogramBins = 256;
float HistogramRange1[2]={0255};
float *HistogramRange[1]={&HistogramRange1[0]};
int CompareHist(IplImage* image1 IplImage* image2)
{
IplImage* srcImage;
IplImage* targetImage;
if (image1->nChannels != 1) {
srcImage = cvCreateImage(cvSize(image1->width image1->height) image1->depth 1);
cvCvtColor(image1 srcImage CV_BGR2GRAY);
} else {
srcImage = image1;
}
if (image2->nChannels != 1) {
targetImage = cvCreateImage(cvSize(image2->width image2->height) srcImage->depth 1);
cvCvtColor(image2 targetImage CV_BGR2GRAY);
} else {
targetImage = image2;
}
CvHistogram *Histogram1 = cvCreateHist(1 &HistogramBins CV_HIST_ARRAYHistogramRange);
CvHistogram *Histogram2 = cvCreateHist(1 &HistogramBins CV_HIST_ARRAYHistogramRange);
cvCalcHist(&srcImage Histogram1);
cvCalcHist(&targetImage Histogram2);
cvNormalizeHist(Histogram1 1);
cvNormalizeHist(Histogram2 1);
// CV_COMP_CHISQRCV_COMP_BHATTACHARYYA这两种都可以用来做直方图的比较,值越小,说明图形越相似
//printf(“CV_COMP_CHISQR : %.4f\n“ cvCompareHist(Histogram1 Histogram2 CV_COMP_CHISQR));
//printf(“CV_COMP_BHATTACHARYYA : %.4f\n“ cvCompareHist(Histogra
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 74240 2013-03-28 14:20 opencvtest\Debug\opencvtest.exe
文件 795740 2013-03-28 14:20 opencvtest\Debug\opencvtest.ilk
文件 1633280 2013-03-28 14:20 opencvtest\Debug\opencvtest.pdb
文件 2359296 2013-03-28 14:20 opencvtest\ipch\opencvtest-28dddb42\opencvtest-296a8017.ipch
文件 1578 2013-03-28 14:20 opencvtest\opencvtest\Debug\cl.command.1.tlog
文件 20286 2013-03-28 14:20 opencvtest\opencvtest\Debug\CL.read.1.tlog
文件 982 2013-03-28 14:20 opencvtest\opencvtest\Debug\CL.write.1.tlog
文件 2 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 2 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 2 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 2 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 2 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 2 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 2364 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 4612 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 1044 2013-03-28 14:20 opencvtest\opencvtest\Debug\li
文件 424 2013-03-28 14:20 opencvtest\opencvtest\Debug\mt.command.1.tlog
文件 374 2013-03-28 14:20 opencvtest\opencvtest\Debug\mt.read.1.tlog
文件 374 2013-03-28 14:20 opencvtest\opencvtest\Debug\mt.write.1.tlog
文件 406 2013-03-28 09:45 opencvtest\opencvtest\Debug\opencvtest.exe.em
文件 472 2013-03-28 09:45 opencvtest\opencvtest\Debug\opencvtest.exe.em
文件 381 2013-03-28 14:20 opencvtest\opencvtest\Debug\opencvtest.exe.intermediate.manifest
文件 78 2013-03-28 14:20 opencvtest\opencvtest\Debug\opencvtest.lastbuildstate
文件 3009 2013-03-28 14:20 opencvtest\opencvtest\Debug\opencvtest.log
文件 247772 2013-03-28 14:20 opencvtest\opencvtest\Debug\opencvtest.obj
文件 1179648 2013-03-28 08:45 opencvtest\opencvtest\Debug\opencvtest.pch
文件 210 2013-03-28 09:45 opencvtest\opencvtest\Debug\opencvtest_manifest.rc
文件 602 2013-03-28 09:45 opencvtest\opencvtest\Debug\rc.command.1.tlog
文件 346 2013-03-28 09:45 opencvtest\opencvtest\Debug\rc.read.1.tlog
文件 354 2013-03-28 09:45 opencvtest\opencvtest\Debug\rc.write.1.tlog
............此处省略23个文件信息
- 上一篇:离散数学第二版课后习题答案
- 下一篇:EDAverilog课程设计报告
相关资源
- 基于LDA算法的人脸识别程序
- 智能人脸识别算法及FPGA的实现
- 基于KPCA和Gabor小波的特征融合人脸识
- zw_m0_37856223-10140016-基于PCA的人脸识别
- facebook DeepFace人脸识别
-
haarcascade_mcs等所有识别xm
l文件 - 人脸识别汇报总结.ppt
- 人脸识别系统代码,毕设可用
- 利用OpenCV在VS2015平台下对进行人脸识
- 人脸识别——20人亚洲面孔人脸资源
- ORL人脸识别数据库全套
- 人脸识别综述论文几篇在维普上下的
- 人脸识别代码
- 基于lbp的人脸识别57421
- 人脸识别技术方案
- 基于主成分分析的人脸识别
- 基于opencv人脸识别的封装
- 人脸识别完整代码
- 基于PCA和BP神经网络的人脸识别
- 浅谈人工智能中人脸识别技术的应用
- 人脸识别资源库
- 单训练样本条件下人脸识别技术研究
- ORL人脸数据库多格式
- Yale人脸识别图片库bmp
- Unity刷脸人脸识别
- (人脸识别系统研究与实现)全部论
- 人脸识别拍照
- dlib 32位库 19.10.0_release_32bit_msvc1913.l
- LBP人脸识别最近邻分类器
- LBP人脸识别
评论
共有 条评论