Ofi*_* A. 2 matlab slider image-rotation
我在Matlab中有一个GUI(使用GUIDE),它的外观如下:

我想使用滑块旋转图像并实时显示更改.
我用轴来显示图像.
我怎样才能做到这一点?
编辑:我正在构建OCR应用程序.这就是当我旋转它时板看起来如何,数字完全变形.

谢谢.
这是一个示例GUI:
function rotationGUI()
%# read image
I = imread('cameraman.tif');
%# setup GUI
hFig = figure('menu','none');
hAx = axes('Parent',hFig);
uicontrol('Parent',hFig, 'Style','slider', 'Value',0, 'Min',0,...
'Max',360, 'SliderStep',[1 10]./360, ...
'Position',[150 5 300 20], 'Callback',@slider_callback)
hTxt = uicontrol('Style','text', 'Position',[290 28 20 15], 'String','0');
%# show image
imshow(I, 'Parent',hAx)
%# Callback function
function slider_callback(hObj, eventdata)
angle = round(get(hObj,'Value')); %# get rotation angle in degrees
imshow(imrotate(I,angle), 'Parent',hAx) %# rotate image
set(hTxt, 'String',num2str(angle)) %# update text
end
end
Run Code Online (Sandbox Code Playgroud)

如果您更喜欢在GUIDE中构建GUI,请按照下列步骤操作:
创建GUI,并添加必要的组件:轴,滑块,静态文本(拖放)
使用"Property Inspector",根据需要更改滑块属性:: Min/Max/Value/SliderStep.如果您指定一个Tag能够在代码中找到组件,也会有所帮助.
在图的xxxx_OpeningFcn功能中,读取并存储handles结构中的图像,然后显示它:
handles.I = imread('cameraman.tif');
imshow(I, 'Parent',findobj(hObject,'Tag','imgAxis')) %# use tag you assigned
guidata(hObject, handles); %# Update handles structure
angle = round( get(hObject,'Value') );
imshow( imrotate(handles.I,angle) )
编辑: 图像旋转是仿射变换,其将输入图像像素的位置(x,y)映射到输出图像的新坐标(x2,y2).问题是输出坐标可能不总是整数.由于数字图像在离散像素的网格上表示,因此采用某种形式的重采样/插值(这就是为什么当以某些角度旋转时直线可能看起来是锯齿状的).

(借鉴于:了解数字图像插值)
| 归档时间: |
|
| 查看次数: |
7912 次 |
| 最近记录: |