你这个问题说的太大了,按我的理解,是只检测有没有人脸,而不检测是谁是吧。那就比较简单。计算的原理是当图中一片区域出现某个颜色的时候(比如黄种人就是黄色,这个颜色往往是个范围)则认为是有人。我写的程序如下:f = imread('');%人脸的读取图像,往往是一个三维的,比如320*240*3,后面的3表示有rgb三种基色。[m,n,k]=size(f);%得到维度值,比如m=320;n=240;k=3jg=zeros(m,n);%定义一个m*n的0矩阵,当发现f里有颜色和人脸一样使,把当前值赋值为1for i=1:m for j=1:n if f(i,j,1)>150 && f(i,j,1)<200 ... %这个颜色范围你可以自己调整,我用的数据 && f(i,j,2)>150 && f(i,j,2)<200 ... %是我用屏幕吸色器随便找了人脸看了下大体范围 && f(i,j,3)>100 && f(i,j,3)<150 %其中的三个点表示和下面的一行是一个语句。 jg(i,j)=1; %当发现f里有颜色和人脸一样使,把当前值赋值为1 end endend%下面的程序完成:如果某个25的小方块内有20个点以上满足上面的条件则认为有人脸。aa=0;for i=1:m-5 for j=1:n-5 if sum(sum(jg(i:i+5,j:j+5)))>20 aa=1; break; end endendif aa==0 '无人脸'else '有人脸'end