声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2370|回复: 3

[GUI界面] 帮我调试下图象在AXES显示的程序

[复制链接]
发表于 2007-5-16 16:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
:@) function openimage
%获取handles中的数据
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);
    s1=imread(filefullpath);
    axes(handles.axes1);
    h_axes=axes('position',[0.06,0.5,0.45,0.60],'visible','on');      
    imshow(s1);   
end
这是我打开图象的M文件,运行后界面先弹出两个FIGURE,打开图像后不能在指定的AXES1上显示,程序到底哪里出错啦啊?大家帮帮忙。
2.另外我的AXES2是用做处理后显示的,我在菜单栏里有预处理的灰度化选项,附件里有灰度化程序,我直接在CALLBACK 里输入吗?

cj14.fig

6.49 KB, 下载次数: 13

用GUIDE做的界面

cj14.m

8.4 KB, 下载次数: 11

rgb2gray.m

261 Bytes, 下载次数: 10

回复
分享到:

使用道具 举报

发表于 2007-5-16 16:36 | 显示全部楼层
原帖由 jasy 于 2007-5-16 16:30 发表
:@) function openimage
%获取handles中的数据
handles=guidata(gcbf);
%打开图像文件
[filename,filepath,filterindex]=uigetfile(...
    {'*.jpg;*.jpeg;*.tif;*.bmp;*.eps','All Image Files(*.jpg,*. ...


在handles里面需要建立 axis 控件吧。建议看看关于 GUI 的精华贴
 楼主| 发表于 2007-5-16 16:44 | 显示全部楼层
我试过handles=guidata(gcbf);这句要不要结果都一样的?axis 控件?:@o 论坛的那些精华贴上午一直在看,也试了下。始终是没调试好,你能说得具体些吗?麻烦了....:@)
 楼主| 发表于 2007-5-17 13:52 | 显示全部楼层

关于两个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
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-12 17:35 , Processed in 0.088745 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表