无法处理多个文件在Matlab GUI

3视图(30天)
Warid伊斯兰教
Warid伊斯兰教 2021年4月4日
评论道: 里克 2021年4月8日
大家好,
我已经创建了一个Matlab GUI将加载多个图像通过点击一个按钮。我将段所有的图片在一起通过单击段按钮。我可以一起负载多种图像通过单击load按钮。然而,我无法细分这些多种图像在一起当我点击按钮。我附上了一些图片。任何帮助将不胜感激。请查收我的代码如下:
函数varargout =同时(变长度输入宗量)
%为ngui.fig同时MATLAB代码
%的同时,创建一个新的同时或提高现有的
%单*。
%
% H =同时返回处理新同时或处理
%现有单*。
%
%同时(“回调”,hObject eventData,把手,…)当地的电话
%在同时命名的回调函数。用给定的输入参数。
%
%同时(“财产”、“价值”…)创建一个新的同时或提高
现有单* %。从左边开始,属性值对
%用于GUI ngui_OpeningFcn之前被调用。一个
%识别属性名称或无效值使属性的应用程序
%停止。所有的输入都是传递给ngui_OpeningFcn通过变长度输入宗量。
%
% *看到GUI的工具菜单选择指南。选择“GUI允许只有一个
%实例运行(singleton)”。
%
%参见:指南,GUIDATA GUIHANDLES
%以上文字编辑修改帮助同时响应
%的最后修改指导30 - mar - 2021 22:59:22 v2.5
%开始初始化代码,不能编辑
gui_Singleton = 1;
gui_State =结构(“gui_Name”mfilename,
“gui_Singleton”gui_Singleton,
“gui_OpeningFcn”@ngui_OpeningFcn,
“gui_OutputFcn”@ngui_OutputFcn,
“gui_LayoutFcn”[],
“gui_Callback”[]);
如果输入参数个数& & ischar(变长度输入宗量{1})
gui_State。gui_Callback = str2func(变长度输入宗量{1});
结束
如果nargout
[varargout {1: nargout}] = gui_mainfcn (gui_State,变长度输入宗量{:});
其他的
gui_mainfcn (gui_State变长度输入宗量{:});
结束
%结束初始化代码,不能编辑
% - - - - - -执行之前同时仍是可见的。
函数ngui_OpeningFcn (hObject eventdata处理,变长度输入宗量)
%这个函数没有输出参数,看到OutputFcn。
% hObject图的句柄
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
同时%变长度输入宗量命令行参数(见变长度输入宗量)
%为同时选择默认命令行输出
句柄。输出= hObject;
%更新处理结构
guidata (hObject处理);
% UIWAIT使同时等待用户响应(见UIRESUME)
% uiwait (handles.figure1);
% - - - - - -从这个函数返回输出到命令行。
函数varargout = ngui_OutputFcn (hObject eventdata处理)
% varargout细胞数组返回输出参数(见varargout);
% hObject图的句柄
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
%得到默认命令行输出处理结构
varargout {1} = handles.output;
% - - - - - -执行在pushbutton1按钮按下。
函数pushbutton1_Callback (hObject eventdata处理)
% hObject句柄pushbutton1(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
%指定文件所在的文件夹。
myFolder =“D: \ regionGrowing_MLT \图片”;
%确保文件夹确实存在。用户如果没有警告。
如果~ isfolder (myFolder)
errorMessage = sprintf (错误:以下文件夹不存在:\ n % s \ nPlease指定一个新文件夹。,myFolder);
uiwait (warndlg (errorMessage));
myFolder = uigetdir ();%要求一个新的。
如果myFolder = = 0
%的用户点击取消
返回;
结束
结束
%获得文件夹中所有文件的列表和所需的文件名称模式。
filePattern = fullfile (myFolder,‘* . jpg”);你需要什么模式变化百分比。
theFiles = dir (filePattern);
num_files =长度(theFiles);
一个=细胞(1、num_files);
k = 1:长度(theFiles)
baseFileName = theFiles (k) . name;
fullFileName = fullfile (theFiles (k)。文件夹,baseFileName);
流(1,“现在阅读% s \ n”,fullFileName);
%现在做任何你想做的这个文件的名字,
%,如阅读它作为图像数组与imread ()
imageArray = imread (fullFileName);
imshow (imageArray);%显示图象。
drawnow;%力显示立即更新。
InputImage = imageArray (:, k);
轴(handles.axes1);
handles.InputImage = InputImage;
结束
%更新处理结构
guidata (hObject处理);
% - - - - - -执行在pushbutton2按钮按下。
函数pushbutton2_Callback (hObject eventdata处理)
% hObject句柄pushbutton2(见GCBO)
% eventdata保留——MATLAB的未来版本中定义
%处理结构处理和用户数据(见GUIDATA)
k = 1:长度(theFiles)
InputImage = handles.InputImage;
% InputImage = handles.InputImage;
InputImage = rgb2gray (InputImage);
x = 300;y = 340;
一个= imgaussfilt (InputImage, 2);
b = adapthisteq(一个);
m = regiongrowing_MLT (b, x, y, 12);
m = imfill (m,“黑洞”);
%,imshow (m)
bw = imbinarize (m);
bw = bwareafilt (bw, 1);
%,imshow (bw)
我= imresize (InputImage, 5);%,使图像变得更小
m1 = imresize (bw, 5);%的快速计算
%次要情节(2 2 1);imshow(我);标题(“输入图像”);
%次要情节(2,2,2);imshow (m1);标题(“初始化”);
%次要情节(2、2、3);标题(“分割”);
赛格= region_seg (m1, 30);%——运行分割
%次要情节(2、2、4);imshow(凹陷);标题(“全球提出分割”);
imshow(凹陷);
轴(handles.axes2);
handles.seg =凹陷;
结束
guidata (hObject处理);
将显示以下错误消息
未识别的函数或变量“theFiles”。
错误同时> pushbutton2_Callback(第124行)
k = 1:长度(theFiles)
错误gui_mainfcn(第95行)
函数宏指令(变长度输入宗量{:});
同时误差(42)行
gui_mainfcn (gui_State变长度输入宗量{:});
错误
matlab.graphics.internal.figfile.FigFile /阅读> @ (hObject eventdata)同时(pushbutton2_Callback, hObject、eventdata guidata (hObject))
当评估UIControl回调时发生错误。

答案(1)

图像分析
图像分析 2021年4月4日
文件没有定义的按钮。 请附上您的.fig文件 所以我可以修复它。
你pushbutton1_Callback()应该填满一个列表框,不仅多次覆盖imageArray数组,然后什么也不做。
10评论
里克
里克 2021年4月8日
一个GUI图形用户 接口 。你应该确保你的代码工作第一,再建立一个GUI。
关于错误消息,从它你不理解什么?你写的代码,所以你必须明白你想做的事。你提供的输入?错误消息表明它应该是一个路径,或者一个RGB图像。

登录置评。

类别

找到更多的在迁移向导的应用帮助中心文件交换

标签

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!