实现程序如下:
function uipanel7_SelectionChangeFcn(hObject, eventdata, handles) %图像翻转
% hObject handle to uipanel7 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) str=get(hObject,'string'); axes(handles.axes2); global T switch str
case '左右翻转' T=handles.img; f=fliplr(handles.img); imshow(f); handles.img=f;
guidata(hObject,handles); case '上下翻转' T=handles.img;
f=flipud(handles.img); imshow(f); handles.img=f;
guidata(hObject,handles);
29 / 52
end
程序关键部分:通过f=fliplr(handles.img); f=flipud(handles.img);分别实现左右镜像翻转与上下镜像翻转。
(2)图像旋转。
实现图像的逆时针旋转任意角度。
实现程序段如下:
function pushbutton3_Callback(hObject, eventdata, handles) %图像爱那个旋转
% hObject handle to pushbutton3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global T
axes(handles.axes2); T=getimage;
prompt={'旋转角度:'};
30 / 52
defans={'0'};
p=inputdlg(prompt,'input',1,defans); p1=str2num(p{1});
f=imrotate(handles.img,p1,'bilinear','crop'); imshow(f); handles.img=f;
guidata(hObject,handles);
关键部分:通过p=inputdlg(prompt,'input',1,defans);p1=str2num(p{1}); 来输入旋转参数。
通过函数f=imrotate(handles.img,p1,'bilinear','crop');实现翻转。
4.12特殊处理
(1)底片效果。将图像变为底片,并显示。
实现程序如下:
% --- Executes on button press in pushbutton12.
function pushbutton12_Callback(hObject, eventdata, handles) % hObject handle to pushbutton12 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global T
axes (handles.axes2); T=getimage;
f=imcomplement(handles.img); %图像取反′
31 / 52
imshow(f); handles.img=f;
guidata(hObject,handles);
程序段关键部分:通过f=imcomplement(handles.img);实现图像取反,形成底片效果。
(2)边缘信息。采取图像的边缘信息。
实现程序段如下:
% --- Executes on button press in pushbutton16.
function pushbutton16_Callback(hObject, eventdata, handles) % hObject handle to pushbutton16 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) global T
axes(handles.axes2); T=getimage;
f=edge(handles.img,'canny'); imshow(f); handles.img=f;
guidata(hObject,handles);
程序关键部分:通过f=edge(handles.img,'canny');是实现边缘信息的获取。
32 / 52