I = im read(' E:\ Matlab \ picture \ q5 . jpg ');
o = RGB 2 ntsc(I);
G=O(:,:,2);
[m n]=大小(G);
u =零(m,n);
因為i=1:m
對於j=1:n
如果G(i,j)>0.03 & amp& ampG(i,j)& lt;0.16
U(i,j)= 1;
結束
結束
結束
sr=strel('disk ',6);
C=imclose(U,Sr);
l = bw label(C);
B=regionprops(L,' area ');
se =[B . Area];sm = max(Se);
如果Sm & gtm*n/27
B1=bwareaopen(C,Sm);
k _ y 1 = m;k2 = m;L2 = n;
因為i=1:m
如果有的話(B1(i,)==1
k _ y 1 = I;
破裂
結束
結束
for i=k_y1:m
如果B1(i,)==0
k2 = I;
破裂
結束
結束
對於j=1:n
如果有的話(B1(:,j))==1
l _ y 1 = j;
破裂
結束
結束
對於j=l_y1:n
如果B1(:,j)==0
L2 = j;
破裂
結束
結束
k _ y = k2-k _ y 1;
l = L2-l _ y 1;
如果k _ y & gt. 5 * l & amp& ampk _ y & lt3 *長
I1=imcrop(B1,[l _ y 1k _ y 1 l . 4 * k _ y]);
[n 1m 1]= size(I 1);
l 1 = bw label(I 1);
E=regionprops(L1,' area ');
si =[E . Area];
sm = max(Si);
如果Sm/(n1*m1)>.3
B2=bwareaopen(I1,floor(. 5 * Sm));
g _ y 1 = m 1;G2 = m 1;
對於j=1:m1
如果有的話(B2(:,j))==1
g _ y 1 = j;
破裂
結束
結束
對於j=g_y1:m1
如果B2(:,j)= = 0;
G2 = j;破裂
結束
結束
g = G2-g _ y 1;
圖;imshow(壹);
繼續
h 1 = line([l _ y 1+g _ y 1,l_y1+g_y1+g],[k_y1,k _ y 1]);
H2 = line([l _ y 1+g _ y 1+g,l_y1+g_y1+g],[k_y1,k _ y 1+1.1 * g]);
H3 = line([l _ y 1+g _ y 1+g,l_y1+g_y1],[k _ y 1+1 * g,k _ y 1+1 * g]);
h4=line([l_y1+g_y1,l_y1+g_y1],[k_y1+1.1*g,k _ y 1]);
h =[h 1 H2 H3 H4];
set(h,'顏色',[1 0],'線寬',2);
其他
圖;imshow(壹);
結束
其他
圖;imshow(壹);
結束
其他
圖;imshow(壹);
結束
註意:這個程序是基於膚色的人臉檢測程序,比較簡單,只能檢測壹張臉。對於背景單調的單張照片,檢測率高,檢測速度快。在這個方案的基礎上,再次進行眼睛定位,效果不錯。可以用來學習和參考,尤其可以用來分享。如果網友嘗試後發現問題,可以反饋給自己解決。
建議妳參考這個
/download/code/-MATLAB-IC-56717 . html