该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
>> 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