【发布时间】:2011-07-01 14:48:22
【问题描述】:
我在 Matlab 中有一个 GUI(使用 GUIDE),它的外观是这样的:
我想使用滑块旋转图像并实时显示变化。
我使用坐标轴来显示图像。
我该怎么做?
编辑:我正在构建 OCR 应用程序。这是我旋转盘子时的样子,数字完全变形了。
谢谢。
【问题讨论】:
标签: matlab slider image-rotation
我在 Matlab 中有一个 GUI(使用 GUIDE),它的外观是这样的:
我想使用滑块旋转图像并实时显示变化。
我使用坐标轴来显示图像。
我该怎么做?
编辑:我正在构建 OCR 应用程序。这是我旋转盘子时的样子,数字完全变形了。
谢谢。
【问题讨论】:
标签: matlab slider image-rotation
这是一个示例 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
如果您更喜欢在 GUIDE 中构建 GUI,请按照以下步骤操作:
创建 GUI,并添加必要的组件:轴、滑块、静态文本(拖放)
使用“属性检查器”,根据需要更改滑块属性::Min/Max/Value/SliderStep。如果您指定 Tag 以便能够在代码中找到组件,也会有所帮助。
在图中的xxxx_OpeningFcn函数中,读取图片并存储在handles结构中,然后展示出来:
编辑: 图像旋转是一种仿射变换,它将输入图像像素的位置 (x,y) 映射到输出图像的新坐标 (x2,y2)。问题是输出坐标可能并不总是整数。由于数字图像是在离散像素网格上表示的,因此采用了某种形式的重采样/插值(这就是为什么直线在某些角度旋转时可能看起来参差不齐的原因)。
【讨论】: