用matlab写的脸部识别代码

时间:2014-04-07 04:30:57
【文件属性】:

文件名称:用matlab写的脸部识别代码

文件大小:595KB

文件格式:ZIP

更新时间:2014-04-07 04:30:57

matlab 有图片和m文件

源码如下: %%%%% Reading of a RGB image i=imread('face8.jpg'); I=rgb2gray(i); BW=im2bw(I); figure,imshow(BW) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% minimisation of background portion [n1 n2]=size(BW); r=floor(n1/10); c=floor(n2/10); x1=1;x2=r; s=r*c; for i=1:10 y1=1;y2=c; for j=1:10 if (y2<=c | y2>=9*c) | (x1==1 | x2==r*10) loc=find(BW(x1:x2, y1:y2)==0); [o p]=size(loc); pr=o*100/s; if pr<=100 BW(x1:x2, y1:y2)=0; r1=x1;r2=x2;s1=y1;s2=y2; pr1=0; end imshow(BW); end y1=y1+c; y2=y2+c; end x1=x1+r; x2=x2+r; end figure,imshow(BW) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%% detection of face object L = bwlabel(BW,8); BB = regionprops(L, 'BoundingBox'); BB1=struct2cell(BB); BB2=cell2mat(BB1); [s1 s2]=size(BB2); mx=0; for k=3:4:s2-1 p=BB2(1,k)*BB2(1,k+1); if p>mx & (BB2(1,k)/BB2(1,k+1))<1.8 mx=p; j=k; end end figure,imshow(I); hold on; rectangle('Position',[BB2(1,j-2),BB2(1,j-1),BB2(1,j),BB2(1,j+1)],'EdgeColor','r' )


【文件预览】:
face_detection
----face_detection()
--------face_database()
--------face8.jpg(161KB)
--------facedetection.m(1KB)

网友评论

  • 我感觉也是有一点点缺陷,不过都还好吧。
  • 处理误差很大啊,我尝试了其他很多图片,很多都直接找错地方。不过还是谢谢楼主的分享。
  • 挺好的,处理彩色图好,直接处理灰度图效果没有彩图好。
  • 呵呵,好用好用,正在愁脸部识别的assignment怎么搞呢。
  • 能够定位图片中脸的位置,但并不是很精确,如果脸很小,锁定的区域会很大