matlab gui中图像保存在axes中的问题 20
matlabgui中图像保存在axes中的问题:我想在GUI中进行图像处理,把原图放在axes1中,处理后的图片放在axes2中,怎么才能实现?以下是我写的代码:func...
matlab gui中图像保存在axes中的问题:我想在GUI中进行图像处理,把原图放在axes1中,处理后的图片放在axes2中,怎么才能实现?以下是我写的代码
:
function pushbutton3_Callback(hObject, eventdata, handles)
[name,path]=uigetfile({'*.jpg';'*.bmp';'*.gif';'tif'},'选择图片');
clc;
global x;
file=[path,name];
axes(handles.axes1);
x=imread(file); %读取图像
handles.img=x;
% Update handles structure
guidata(hObject, handles);
imshow(x); %显示图像
title('原始图像');
到这里是显示读取的待处理图片,显示在axes1中,一切正常,再添加了下面的程序:
function pushbutton1_Callback(hObject, eventdata, handles)
se=[0,1,0;1,1,1;0,1,0];
global x;
x=double(x);
[im_height,im_width]=size(x);
[se_height,se_width]=size(se);
halfheight=floor(se_height/2);
halfwidth=floor(se_width/2);
[se_origin]=floor((size(se)+1)/2);
image_dilation=padarray(x,se_origin,0,'both'); %Image to be used for dilation
image_erosion=padarray(x,se_origin,256,'both'); %Image to be used for erosion
%%% Erosion
se=se';
for k=se_origin(2)+1:im_height+se_origin(2)
for kk=se_origin(1)+1:im_width+se_origin(1)
eroded_image(k-se_origin(2),kk-se_origin(1))=min(min(image_erosion(k-se_origin(2):k+halfwidth-1,kk-se_origin(1):kk+halfheight-1)-se));
end
end
imwrite(eroded_image,'膨胀.jpg');
guidata(hObject, handles);
axes(handles.axes1);
imshow(eroded_image);
title('处理后图像');
到这里,运行时,点击按钮1时,图片没有按预想的显示在axes2中,而是占满了整个GUI窗口。请问该如何修改,望高手解答!! 展开
:
function pushbutton3_Callback(hObject, eventdata, handles)
[name,path]=uigetfile({'*.jpg';'*.bmp';'*.gif';'tif'},'选择图片');
clc;
global x;
file=[path,name];
axes(handles.axes1);
x=imread(file); %读取图像
handles.img=x;
% Update handles structure
guidata(hObject, handles);
imshow(x); %显示图像
title('原始图像');
到这里是显示读取的待处理图片,显示在axes1中,一切正常,再添加了下面的程序:
function pushbutton1_Callback(hObject, eventdata, handles)
se=[0,1,0;1,1,1;0,1,0];
global x;
x=double(x);
[im_height,im_width]=size(x);
[se_height,se_width]=size(se);
halfheight=floor(se_height/2);
halfwidth=floor(se_width/2);
[se_origin]=floor((size(se)+1)/2);
image_dilation=padarray(x,se_origin,0,'both'); %Image to be used for dilation
image_erosion=padarray(x,se_origin,256,'both'); %Image to be used for erosion
%%% Erosion
se=se';
for k=se_origin(2)+1:im_height+se_origin(2)
for kk=se_origin(1)+1:im_width+se_origin(1)
eroded_image(k-se_origin(2),kk-se_origin(1))=min(min(image_erosion(k-se_origin(2):k+halfwidth-1,kk-se_origin(1):kk+halfheight-1)-se));
end
end
imwrite(eroded_image,'膨胀.jpg');
guidata(hObject, handles);
axes(handles.axes1);
imshow(eroded_image);
title('处理后图像');
到这里,运行时,点击按钮1时,图片没有按预想的显示在axes2中,而是占满了整个GUI窗口。请问该如何修改,望高手解答!! 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询