# how to rotate image using function notation

5 次查看（过去 30 天）
mark palmer 2023-2-7

How do I write Matlab code using functions to make a rotation on an image? THis is all I've got so far, and I'm probably way off...
I = 'cameraman.jpg';
fa = 45;
f1 = @(xy) xy(:,1) .* cosd(fa) + xy(:,2) .* sind(fa);
f2 = @(xy) -xy(:,1) .* sind(fa) + xy(:,2) .* cosd(fa);
ifcn1 = @(xy) f1(xy);
tform1 = geometricTransform2d(ifcn1);
Rin = imref2d(size(I),[-1 1],[-1 1]);
Rout = imref2d(size(I),[-1 1],[-1 1]);
rho1a = imwarp(I,Rin,tform1,'OutputView',Rout,FillValues=0);

### 采纳的回答

Chris 2023-2-7
If you're using imwarp, you might as well use imrotate, no? You'd be using the function imrotate() to rotate an image, if that's really your goal.
fa = 45;
imrot = imrotate(I,fa);
imshow(imrot)
If you want an anonymous function, like you're using...
rotateImage = @(im, ang) imrotate(im, ang);
imrot = rotateImage(I, fa);
imshow(imrot)
You could also make a standalone function, in a file of the same name or at the bottom of a script, that accepts inputs and outputs the rotated image, and does whatever else you want with the input.
imrot = rotImFun(I, fa);
imshow(imrot);
function out = rotImFun(im, ang)
out = imrotate(im, ang);
end
##### 3 个评论显示 1更早的评论隐藏 1更早的评论
mark palmer 2023-2-7

IS there an alternate way to do this with trig functions within an anonymous function? I know it isn't the easiest way, I'm just trying to learn.
Chris 2023-2-7
I'm unaware of a method that doesn't require a complex series of operations, which a single anonymous function isn't really suited for. That doesn't mean it doesn't exist--it just means I don't have an answer.

### 类别

Help CenterFile Exchange 中查找有关 Images 的更多信息

R2022a

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by