create a simple gui that lets the user rotate a image using a slide bar in matlab

Here is a way to create a simple GUI that allows the user to rotate an image using a slider in Matlab.

  1. First, create a new GUI using the guide command.

  2. From the "Layout Editor" tab, drag a "Slider" component onto your GUI. You can customize the slider by changing its properties in the "Property Editor" tab.

  3. Next, drag an "Axes" component onto your GUI. This is where we'll display the image.

  4. In the "OpeningFcn" function of your GUI, load the image you want to rotate using the imread function. For example, to load an image called "myimage.jpg" located in the same directory as your Matlab script:

main.m
image = imread('myimage.jpg');
31 chars
2 lines
  1. Also in the "OpeningFcn" function, display the loaded image in the "Axes" component you added in step 3. You can do this using the imshow function:
main.m
imshow(image, 'Parent', handles.axes1);
40 chars
2 lines
  1. Now we need to add a callback function that will be called whenever the user moves the slider. To do this, select the "Slider" component from the "Component Browser" section of the "GUIDE Layout Editor" and, in the "Property Inspector" tab, scroll down to "Callback". Click the "..." button to create a new callback function.

  2. In the newly created callback function, retrieve the current slider value using the get function:

main.m
slider_value = get(handles.slider1, 'Value');
46 chars
2 lines
  1. Use the imrotate function to rotate the image by the appropriate angle and update the image displayed in the "Axes" component. For example, to rotate the image by 45 degrees:
main.m
rotated_image = imrotate(image, slider_value, 'bilinear', 'crop');
imshow(rotated_image, 'Parent', handles.axes1);
115 chars
3 lines
  1. That's it! Run your GUI and move the slider to see the image rotate.

Here's the complete code:

main.m
function varargout = rotate_image_gui(varargin)
% ROTATE_IMAGE_GUI MATLAB code for rotate_image_gui.fig
%      ROTATE_IMAGE_GUI, by itself, creates a new ROTATE_IMAGE_GUI or raises the existing
%      singleton*.
%
%      H = ROTATE_IMAGE_GUI returns the handle to a new ROTATE_IMAGE_GUI or the handle to
%      the existing singleton*.
%
%      ROTATE_IMAGE_GUI('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in ROTATE_IMAGE_GUI.M with the given input arguments.
%
%      ROTATE_IMAGE_GUI('Property','Value',...) creates a new ROTATE_IMAGE_GUI or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before rotate_image_gui_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to rotate_image_gui_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help rotate_image_gui

% Last Modified by GUIDE v2.5 10-Nov-2021 10:54:09

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @rotate_image_gui_OpeningFcn, ...
                   'gui_OutputFcn',  @rotate_image_gui_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before rotate_image_gui is made visible.
function rotate_image_gui_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to rotate_image_gui (see VARARGIN)

% Choose default command line output for rotate_image_gui
handles.output = hObject;

% Load image
image = imread('myimage.jpg');

% Display image in Axes component
imshow(image, 'Parent', handles.axes1);

% Update handles structure
guidata(hObject, handles);

% UIWAIT makes rotate_image_gui wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = rotate_image_gui_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on slider movement.
function slider1_Callback(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get current slider value
slider_value = get(handles.slider1, 'Value');

% Load image
image = imread('myimage.jpg');

% Rotate image
rotated_image = imrotate(image, slider_value, 'bilinear', 'crop');

% Display rotated image in Axes component
imshow(rotated_image, 'Parent', handles.axes1);

% --- Executes during object creation, after setting all properties.
function slider1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to slider1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Modify slider properties
set(hObject, 'SliderStep', [1/360, 1/36], 'Max', 360, 'Min', -360);

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
4342 chars
114 lines

related categories

gistlibby LogSnag