最近又用到matlab做GUI,之前学的全忘了,还好两年前留了大实验源码。
这次我来分析如何将matlab处理过的图片保存。
实验效果
经过灰度转换,图象被处理,并显示到另一个地方。
点击保存
图片被保存
实验原理
查看保存的回调函数
function save_Callback(hObject, eventdata, handles)
[FileName,PathName] = uiputfile({'*.jpg','JPEG(*.jpg)';...'*.bmp','Bitmap(*.bmp)';...'*.gif','GIF(*.gif)';...'*.*', 'All Files (*.*)'},...'Save Picture','Untitled');
if FileName==0return;
elseh=getframe(handles.axes2);imwrite(h.cdata,[PathName,FileName]);
end;
F = getframe 捕获显示在屏幕上的当前坐标区作为影片帧。F 是一个包含图像数据的结构体。getframe 按照屏幕上显示的大小捕获这些坐标区。它并不捕获坐标区轮廓外部的刻度标签或其他内容。
F 是一个结构体,其中包含的 cdata 字段中包含捕获的图像数据。
imwrite(A,filename) 将图像数据 A 写入 filename 指定的文件,并从扩展名推断出文件格式。imwrite 在当前文件夹中创建新文件。输出图像的位深度取决于 A 的数据类型和文件格式。
查看灰度转换的回调函数
function huidu_Callback(hObject, eventdata, handles)
file=get(handles.edit1,'string');
X=imread(file);
X=rgb2gray(X);%就是这个函数把图片变成灰度图
axes(handles.axes2)
imshow(X);
figure;
imhist(X);
imhist
查看图像像素强度的分布。调用 imhist 函数创建直方图。(请在调用 imhist 之前使用 figure 命令,这样直方图就不会覆盖当前图窗窗口中显示的图像 I。)请注意直方图表明图像的强度范围相当窄。该范围未能涵盖 [0, 255] 之间尽可能多的范围,并缺少能产生良好对比度的高值和低值。