jasy 发表于 2007-5-17 21:30

关于两个AXES的图像句柄传递问题

关于两个AXES的图像句柄传递问题

:@) 我在AXES1上打开图像文件才程序如下:function openimage
%打开图像文件
handles = guidata(gcbf);
=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

zhenghui 发表于 2009-10-11 09:36

就是用句柄啊!
页: [1]
查看完整版本: 关于两个AXES的图像句柄传递问题