打开图像:
%适用于GUI等交互 path为待打开的文件夹路径
[filename pathname]=uigetfile({'*.jpg;*.png;*.bmp;*.tif;*.*'},'载入图像',path);
if isequal (filename,0)|isequal(pathname,0)
errordlg('没有选中文件','出错');
return;
else
file=[pathname,filename];
%常用,得到矩阵,path为图像路径
im = imread(path)
其它操作:(多基于:Image Processing Toolbox )
%图像取反:原图与取反后图像每点的和为255
f=imcomplement(im);
%对比度及亮度调整 immultiply:图像乘法,p1:对比度,p2:亮度
f=immultiply(im,p1)+p2;
%图像旋转 p1:旋转角度(num),指定了双线性插值,并要求将结果裁剪为与原始图像相同的大小。
f=imrotate(im,p1,'bilinear','crop');
%水平镜像 将图像左右翻转 left-right
f=fliplr(im);
%垂直镜像 将图像上下翻转 up-down
f=flipud(im);
%绘制图像直方图
x=imhist(im);%直方图化x(i),第i个像素的值,并画出直方图的图像
x1=x(1:10:256);
horz=1:10:256;
bar(horz,x1);%bar(x,y),得到y在x点处画的图像,y与x对应
axis([0 256 0 1500]);
set(handles.axes2,'xtick',0:200:15000);
set(handles.axes2,'ytick',0:200:15000);
%通过直方图均衡化增强对比度
h=histeq(im);
GUI技巧:
1.在图像处理中,对原始图像,做global处理,便于“还原”,“撤销”,且结构清晰.
%当前图像用句柄表示,不断更新
handles.img = f;
2.各控件的回调函数中,hObject的值是不一样的,分别代表调用回调函数的控件的句柄,而handles结构却是一样的。这种机制便于figure内的不同控件的回调函数内传递数据。
%在回调函数中直接取当前对象的某种属性
str=get(hObject,'string');
3.对话框
% prompt(提问)-含提问内容的cell array,’input‘-对话框title,
% 1-对话框num_lines,与prompt中包含的元素个数相同,提问的行数
% defans-对话框defAns,定义的默认答案 eg:旋转中,defAns = 0
p=inputdlg(prompt,'input',1,defans);
p1 = str2num(p{1});
%设定对象位置时: position:[x,y,weight,height]
axis([0 255 0 1500]) %图像横轴到255,纵轴取值到1500