马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
关于两个AXES的图像句柄传递问题
:@) 我在AXES1上打开图像文件才程序如下:function openimage
%打开图像文件
handles = guidata(gcbf);
[filename,filepath,filterindex]=uigetfile(...
{'*.jpg;*.jpeg;*.tif;*.bmp;*.eps','All Image Files(*.jpg,*.jpeg,*.tif,*.bmp,*.eps)';
'*.jpg','JPG-files(*.jpg)';...
'*.jpeg','JPEG-files(*.jpeg)';...
'*.tif','TIF-files(*.tif)';...
'*.bmp','BMP-files(*.bmp)';...
'*.eps','EPS-files(*.eps)';...
'*.*','All Image Files(*.*)'},...
'选择图像文件','untitled.jpg',...
'multiselect','off');
if isequal(filename,0)||isequal(filepath,0)
return;
else
filefullpath=fullfile(filepath,filename);
fimg=imread(filefullpath);
axes(handles.axes1);
imshow(fimg);
end
后来从别的例子上个找来了下面句柄加了上去:
origimg.fimgdata=fimg;
origimg.fimgpath=filefullpath;
origimg.fimgname=filename;
handles.data.origimg=origimg;
guidata(handles.hdata.hdls_figCJ14.thCJ14,handles);
然后在灰度化处理的程序上例子的程序是:
function dip_test_pre_rgb2gray
handles=guidata(gcbf);
hj_rgb=handles.data.origimg.fimgdata;
hj_gray=rgb2gray(hj_rgb);
imshow(hj_gray);
handles.data.origimg.hj_gray=hj_gray;
guidata(handles.hdata.hdls_figmain.thmain,handles);
guidata(gcf,handles);
我看了下然后把程序自己改成:
function rgb2gray
handles=guidata(hObject, eventdata, handles)
get(handles.axes1);
handles=guidata(gcbf);
hf_gray=rgb2gray(fimg);
axes(handles.axes2)
imshow(hf_gray);目的是在在AXES上显示。
我的GUI是用GUIDE设计的,在自动生成的M文件上,我按照例子的程序,自己在结尾修改添加了:
%在handles中保存数据
hdls_figCJ14=guihandles(CJ14);
handles.hdata.hdls_figCJ14=hdls_figCJ14;
guidata(CJ14,handles);
综上,调试超出了我的能力范围,我下一步要解决的滤波,锐化都要遇到类似问题。我有下列疑问:
1.这些句柄在两个AXES上是怎样传递的?就一句handles=guidata(gcbf)可以完成吗/有些人说用GET语句。
2.自动生成的M文件允许自己在上面修改吗?我在里边添加handles的保存语句有没必要?
3.是不是每编写一个CALLBACK的M文件都应该养成保存句柄以便继续操作的习惯?
谢谢。同时我要说的是精华贴子已经看过了。:handshake :handshake |