当前位置:首页 > 代码 > 正文

脸部识别c代码(人脸识别 编程)

admin 发布:2022-12-19 04:51 127


本篇文章给大家谈谈脸部识别c代码,以及人脸识别 编程对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

人脸识别的算法,怎么从两张图片中找出人脸 的部分,并比较两个人是否是同一个人。

OPENCV里就有,我大4的时候用过。安装后,DATA目录下,haarcascades目录下,haarcascade_frontalface_default.xml就不错。这是人脸识别的数据。

用法请根据这个文件名找吧,我记得就是调用OPENCV里的某个函数(C++),用这个文件名和图作参数,返回的就是图中人脸的位置。

嘿嘿,50分么,下面是我以前的代码,这里是你用得着的部分:

const char* cascadeFile = "haarcascade_frontalface_alt.xml";

const char* folder = "C:\\Program Files\\OpenCV\\data\\haarcascades\\";

char path[1024];

sprintf(path, "%s%s", folder, cascadeFile);

CvHaarClassifierCascade* cascade = (CvHaarClassifierCascade*) cvLoad(path, 0, 0, 0);

//然后cascade就存着需要的那个CvHaarClassifierCascade了。

......

CvSeq* faces = cvHaarDetectObjects(img, cascade, storage,

1.1, 2, CV_HAAR_DO_CANNY_PRUNING,

cvSize(source-getWidth() 7, source-getHeight() 7));

这句中,img是一个IplImage*,我自己的项目是从摄像头弄来的,我估计你需要直接用opencv载入图片。cascade就是载入的OPENCV的样本数据,storage是一个空间,我用的CvMemStorage* storage = cvCreateMemStorage(0)创建的,detect objects之前我还用了cvClearMemStorage(storage),1.1是缩放,2是检测像素大小,CV_HAAR_DO_CANNY_PRUNING是比较方法, 一个OPENCV自带的常量。最后cvSize的返回值是允许的最小脸部大小。每个变量都解释到了吧。

之后faces-total就是找到几个脸。用cvGetSeqElem(faces, i)来取每个脸的数据,取出来的东西是(CvRect*),要记得TYPECAST,例如CvRect face1 = *((CvRect*) cvGetSeqElem(faces, 0))。这样得到的CvRect有4个变量face1.x,face1.y,face1.width,face1.height就是人脸在图片中的位置了。

基于matlab简单的特征脸的人脸识别程序

这是我写的程序,参照《模式识别》张学工第9章。

a1=imread('a1.jpg');

a2=imread('a2.jpg');

b1=imread('b1.jpg');

b2=imread('b2.jpg');

a1=rgb2gray(a1);

a2=rgb2gray(a2);

b1=rgb2gray(b1);

b2=rgb2gray(b2);

figure,imshow(a1)

figure,imshow(a2)

figure,imshow(b1)

figure,imshow(b2)

a1=double(a1);

a2=double(a2);

b1=double(b1);

b2=double(b2);

a1_lie=a1(:);

a2_lie=a2(:);

b1_lie=b1(:);

b2_lie=b2(:);

c=cat(1,a1_lie',a2_lie',b1_lie',b2_lie');

c_mean=mean(c);

X=[a1_lie-c_mean',a2_lie-c_mean',b1_lie-c_mean',b2_lie-c_mean'];

R=X'*X; % R是4×4的矩阵

[p,q]=eig(R);

u=diag(q); % u是4×1的列向量

u=flipud(u); % flipud(u)实现矩阵的上下翻转, u是4×1的列向量

v=fliplr(p); % fliplr(p)实现矩阵的左右翻转,v是4×4的矩阵

e=zeros(36000,4);

for m=1:3

e(:,m)=X*v(:,m)./(u(m)^(-0.5)); % 参见《模式识别》P226公式9-18

end

p1=zeros(200,180);

p2=zeros(200,180);

p3=zeros(200,180);

for m=1:36000

p1(m)=e(m);

p2(m)=e(m+36000);

p3(m)=e(m+72000);

end

p1=mat2gray(p1);

p2=mat2gray(p2);

p3=mat2gray(p3);

figure,imshow(p1) % 显示第1特征脸

figure,imshow(p2) % 显示第2特征脸

figure,imshow(p3) % 显示第3特征脸

new=c*e(:,1:3); %分别计算4个训练样本分别在第1、第2、第3、特征脸上的投影

p1=imread('p_test1.jpg'); %读入一个测试样本

p1=rgb2gray(p1);

figure,imshow(p1);

p2=double(p1(:));

test=p2'*e(:,1:3);%计算测试样本在3个特征脸上的投影

error=zeros(4,1);

for m=1:4

error(m)=norm((new(m,:)-test));

end

[distence,index]=sort(error); %将列向量error中的数据按从小到大排列

if index(1)==1

result=1;

elseif index(1)==2

result=1;

elseif index(1)==3

result=2;

elseif index(1)==4

result=2;

end

result %result为1时表示测试样本属于第1个人,为2时表示测试样本属于第2个人

加载人像检测模型的代码是

很多人都认为人脸识别是一项非常难以实现的工作,看到名字就害怕,然后心怀忐忑到网上一搜,看到网上N页的教程立马就放弃了。这些人里包括曾经的我自己。其实如果如果你不是非要深究其中的原理,只是要实现这一工作的话,人脸识别也没那么难。今天我们就来看看如何在40行代码以内简单地实现人脸识别。

一点区分

对于大部分人来说,区分人脸检测和人脸识别完全不是问题。但是网上有很多教程有无无意地把人脸检测说成是人脸识别,误导群众,造成一些人认为二者是相同的。其实,人脸检测解决的问题是确定一张图上有木有人脸,而人脸识别解决的问题是这个脸是谁的。可以说人脸检测是是人识别的前期工作。今天我们要做的是人脸识别。

所用工具

Anaconda 2——Python 2

Dlib

scikit-image

Dlib

对于今天要用到的主要工具,还是有必要多说几句的。Dlib是基于现代C++的一个跨平台通用的框架,作者非常勤奋,一直在保持更新。Dlib内容涵盖机器学习、图像处理、数值算法、数据压缩等等,涉猎甚广。更重要的是,Dlib的文档非常完善,例子非常丰富。就像很多库一样,Dlib也提供了Python的接口,安装非常简单,用pip只需要一句即可:

pip install dlib

上面需要用到的scikit-image同样只是需要这么一句:

pip install scikit-image

注:如果用pip install dlib安装失败的话,那安装起来就比较麻烦了。错误提示很详细,按照错误提示一步步走就行了。

人脸识别

之所以用Dlib来实现人脸识别,是因为它已经替我们做好了绝大部分的工作,我们只需要去调用就行了。Dlib里面有人脸检测器,有训练好的人脸关键点检测器,也有训练好的人脸识别模型。今天我们主要目的是实现,而不是深究原理。感兴趣的同学可以到官网查看源码以及实现的参考文献。今天的例子既然代码不超过40行,其实是没啥难度的。有难度的东西都在源码和论文里。

首先先通过文件树看一下今天需要用到的东西:

准备了六个候选人的图片放在candidate-faces文件夹中,然后需要识别的人脸图片test.jpg。我们的工作就是要检测到test.jpg中的人脸,然后判断她到底是候选人中的谁。另外的girl-face-rec.py是我们的python脚本。shape_predi

人脸识别显示c100002

人脸识别显示c100002就是识别错误,原因是可能是你姿势错误需要眼睛闭上、没有平视镜头或者挡住部分脸等影响,需要调整好拍到完整的人脸才可进行识别。

脸部识别c代码的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于人脸识别 编程、脸部识别c代码的信息别忘了在本站进行查找喔。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/2669.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载