matlab人脸追踪,求大神帮助我这个菜鸟解决一下人脸跟踪这个程序的一些问题啊!!...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

>> renliangenzong

错误使用 load

无法读取文件 'renliangenzong.fig': 没有此类文件或目录。

出错 graphics.internal.figfile.FigFile/read (line 27)

hgDataVars = load(filename, '-mat', '-regexp', '^hg[S]');

出错 graphics.internal.figfile.FigFile (line 104)

出错 hgload (line 45)

出错 matlab.hg.internal.openfigLegacy (line 57)

[fig, savedvisible] = hgload(filename, struct('Visible','off'));

出错 gui_mainfcn>local_openfig (line 286)

gui_hFigure = matlab.hg.internal.openfigLegacy(name, singleton, visible);

出错 gui_mainfcn (line 158)

gui_hFigure = local_openfig(gui_State.gui_Name, gui_SingletonOpt, gui_Visible);

出错 renliangenzong (line 39)

gui_mainfcn(gui_State, varargin{:});

程序:

function varargout = renliangenzong(varargin)

% RENLIANGENZONG M-file for renliangenzong.fig

% RENLIANGENZONG, by itself, creates a new RENLIANGENZONG or raises the existing

% singleton*.

%

% H = RENLIANGENZONG returns the handle to a new RENLIANGENZONG or the handle to

% the existing singleton*.

%

% RENLIANGENZONG('CALLBACK',hObject,eventData,handles,...) calls the local

% function named CALLBACK in RENLIANGENZONG.M with the given input arguments.

%

% RENLIANGENZONG('Property','Value',...) creates a new RENLIANGENZONG or raises the

% existing singleton*. Starting from the left, property value pairs are

% applied to the GUI before renliangenzong_OpeningFunction gets called. An

% unrecognized property name or invalid value makes property application

% stop. All inputs are passed to renliangenzong_OpeningFcn via varargin.

%

% *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one

% instance to run (singleton)".

%

% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help renliangenzong

% Last Modified by GUIDE v2.5 12-Jun-2008 21:02:35

% Begin initialization code - DO NOT EDIT

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, ...

'gui_Singleton', gui_Singleton, ...

'gui_OpeningFcn', @renliangenzong_OpeningFcn, ...

'gui_OutputFcn', @renliangenzong_OutputFcn, ...

'gui_LayoutFcn', [] , ...

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

% End initialization code - DO NOT EDIT

% --- Executes just before renliangenzong is made visible.

function renliangenzong_OpeningFcn(hObject, eventdata, handles, varargin)

% This function has no output args, see OutputFcn.

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% varargin command line arguments to renliangenzong (see VARARGIN)

% Choose default command line output for renliangenzong

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

% UIWAIT makes renliangenzong wait for user response (see UIRESUME)

% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.

function varargout = renliangenzong_OutputFcn(hObject, eventdata, handles)

% varargout cell array for returning output args (see VARARGOUT);

% hObject handle to figure

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure

varargout{1} = handles.output;

% --- Executes on button press in yuanshi.

function yuanshi_Callback(hObject, eventdata, handles)

% hObject handle to yuanshi (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

mov=aviread('f:\hum.avi');

set(gca,'position',[0.098,0.55,0.4,0.35],'visible','off');

movie(mov);

% --- Executes on button press in genzong.

function genzong_Callback(hObject, eventdata, handles)

% hObject handle to genzong (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

%%%%%%%眼睛的标注%%%%%%%%%%%%%%%%%%%%

%%%读入模板

c=imread('f:\moban.jpg');%模板原始图片

al=imcrop(c,[102,75,29,15]);%左眼模板图

ar=imcrop(c,[156,75,29,15]);%右眼模板图

saly=size(al,1);%左眼模板高度

salx=size(al,2);%左眼模板宽度

sary=size(ar,1);%右眼模板高度

sarx=size(ar,2);%右眼模板宽度

%%%读入视频帧

mov=aviread('f:\hum.avi');%读取电影信息

fnum=size(mov,2); %读取电影的祯数,mov为1*temp

for k=1:fnum%逐祯进行扫描

b=mov(k).cdata(:,:,:);%将视频序列的第i祯图片给一个变量

d=b;

sby=size(b,1);sbx=size(b,2);%读入图片大小

n1=1;m1=1;

n2=1;m2=1;

%%%%%%%%%%%%%%%%%%求人脸边界%%%%%%%%%%%%%%%

for i=1:240%逐行逐列扫描

for j=1:320

R=b(i,j,1);

G=b(i,j,2);

B=b(i,j,3);

f=[0.2990,0.5870,0.1140,0;-0.1687,-0.3313,0.5000,128;0.5000,-0.4187,-0.0813,128;0,0,0,1]*double([R;G;B;1]);

u(1,1)=uint8(f(1,1));

u(2,1)=uint8(f(2,1));

u(3,1)=uint8(f(3,1));

if (u(1,1)>=70&&u(1,1)<=240&&u(2,1)>=100&&u(2,1)<=150&&u(3,1)>=140&&u(3,1)<=190)

br(i,j)=1;

e(i,j)=uint8(br(i,j));

else br(i,j)=0;

e(i,j)=uint8(br(i,j));

end

end

end

%SE=ones(10,10);

%BW1=erode(e,SE);

%BW2=dilate(BW1,SE);

bw1=bwmorph(e,'open');

y=sum(bw1);

x=sum(bw1');

for n=1:240

if x(1,n)>20

y1=n;

break;

end

end

for n=240:-1:1

if x(1,n)>20

y2=n;

break;

end

end

for n=1:320

if y(1,n)>20

x1=n;

break;

end

end

for n=320:-1:1

if y(1,n)>20

x2=n;

break;

end

end

%%%%%%%%%%%%%%%%%%%%%%左眼模板匹配%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%将模板的像素值顺序放入一维矩阵t(n)中

for i=1:saly

for j=1:salx

tl1(n1)=al(i,j,1);

tl2(n1)=al(i,j,2);

tl3(n1)=al(i,j,3);

n1=n1+1;

end

end

%%%进行区域匹配

for i=(y1-10):(y2+10-saly)%%%%%由于误差的存在,进行误差补偿,

for j=(x1-10):(x2+10-salx) %%%%%补偿量由多次实验得到。

fl1=b(i:i+saly-1,j:j+salx-1,1);%原定原图像某区域,并将

fl2=b(i:i+saly-1,j:j+salx-1,2);%其像素值送入f中

fl3=b(i:i+saly-1,j:j+salx-1,3);

m1=1;

for i2=1:saly

for j2=1:salx

ql1(m1)=double(fl1(i2,j2));%将原图中某区域的像素

ql2(m1)=double(fl2(i2,j2));%值顺序放入矩阵q(m)中

ql3(m1)=double(fl3(i2,j2));

m1=m1+1;

end

end

al1=sum(double(tl1).*ql1)/(norm(double(tl1))*norm(ql1));

al2=sum(double(tl2).*ql2)/(norm(double(tl2))*norm(ql2));

al3=sum(double(tl3).*ql3)/(norm(double(tl3))*norm(ql3));

aal(i,j)=(al1+al2+al3)/3;%计算模板与特定区域的相关系数

end

end

%%%%%%%%完成区域匹配%%%%%%%%%

T=(max(aal))-0.007;

for i=1:size(aal,1)

for j=1:size(aal,2)

if (aal(i,j)>=T)

A=i+saly/2;

B=j+saly/2;

end

end

end

%%%%%%%%%右眼模板匹配%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

n2=1;m2=1;

%%%将模板的像素值顺序放入一维矩阵t(n)中

for i=1:sary

for j=1:sarx

tr1(n2)=ar(i,j,1);

tr2(n2)=ar(i,j,2);

tr3(n2)=ar(i,j,3);

n2=n2+1;

end

end

%%%进行区域匹配

for i=(y1-10):(y2+10-sary)

for j=(x1-10):(x2+10-sarx)

fr1=b(i:i+sary-1,j:j+sarx-1,1);%原定原图像某区域,并将

fr2=b(i:i+sary-1,j:j+sarx-1,2);%其像素值送入f中

fr3=b(i:i+sary-1,j:j+sarx-1,3);

m2=1;

for i2=1:sary

for j2=1:sarx

qr1(m2)=double(fr1(i2,j2));%将原图中某区域的像素

qr2(m2)=double(fr2(i2,j2));%值顺序放入矩阵q(m)中

qr3(m2)=double(fr3(i2,j2));

m2=m2+1;

end

end

ar1=sum(double(tr1).*qr1)/(norm(double(tr1))*norm(qr1));

ar2=sum(double(tr2).*qr2)/(norm(double(tr2))*norm(qr2));

ar3=sum(double(tr3).*qr3)/(norm(double(tr3))*norm(qr3));

aar(i,j)=(ar1+ar2+ar3)/3;%计算模板与特定区域的相关系数

end

end

%%%%%%%%%完成区域匹配

T=(max(aar))-0.007;

for i=1:size(aar,1)

for j=1:size(aar,2)

if (aar(i,j)>=T)

C=i+sary/2;

D=j+sarx/2;

end

end

end

%%%%%%%%%%%%%标注眼睛%%%%%%%%%%%%%%%%%

for n=(A-5):(A+5)

d(n,B,1)=255;

d(n,B,2)=0;

d(n,B,3)=0;

end

for n=(B-5):(B+5)

d(A,n,1)=255;

d(A,n,2)=0;

d(A,n,3)=0;

end

for n=(C-5):(C+5)

d(n,D,1)=255;

d(n,D,2)=0;

d(n,D,3)=0;

end

for n=(D-5):(D+5)

d(C,n,1)=255;

d(C,n,2)=0;

d(C,n,3)=0;

end

for n=y1:y2

for r=(x1-2):x1

d(n,r,1)=255;

d(n,r,2)=0;

d(n,r,3)=0;

end

for s=x2:(x2+2)

d(n,s,1)=252;

d(n,s,2)=0;

d(n,s,3)=0;

end

end

for n=x1:x2

for u=(y1-2):y1

d(u,n,1)=252;

d(u,n,2)=0;

d(u,n,3)=0;

end

for v=y2:(y2+2)

d(v,n,1)=252;

d(v,n,2)=0;

d(v,n,3)=0;

end

end

mov(k).cdata=d;

strtemp=strcat('f:\hum\','pic',int2str(k),'.','jpg');%将每祯转成jpg的图片

imwrite(mov(k).cdata(:,:,:),strtemp);

end

movie2avi(mov,'sky.avi');

suncn=aviread('sky.avi')

set(gca,'position',[0.098,0.11,0.4,0.35],'visible','off');

movie(suncn);

% --- Executes on button press in tuichu.

function tuichu_Callback(hObject, eventdata, handles)

% hObject handle to tuichu (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

close all

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值