Why is the rotate function not working for images?
4 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
MathWorks Support Team
il 30 Giu 2023
Modificato: MathWorks Support Team
il 3 Lug 2023
The documentation for the rotate function says that it works for images, but I am not getting the results I expect.
For example, in the following code, I’m trying to rotate both a line and an image object 45 degrees around the x-axis, but while the line is rotating the image is remaining in the x-y plane.
x = 100:100:1000;
y = randi(10,1,10)*50;
figure;
ax = axes;
h = plot(x,y);
rotate(h,[1 0 0],45)
hold on
im = imread('football.jpg');
i = image(im);
rotate(i,[1 0 0],45)
view(3)
Risposta accettata
MathWorks Support Team
il 3 Lug 2023
Modificato: MathWorks Support Team
il 3 Lug 2023
The issue with using the rotate command on images is that the Image objects do not have ZData.
Normally, when working with something like a patch or surface, the rotate command collects the XData, YData, and ZData from the object, applies the requested transformation to the data, then updates the XData, YData, and ZData on the patch or surface.
This doesn’t work with images because Image objects don’t have ZData. Instead, when querying the data from Image objects, the rotate command assumes that the ZData is all zeros. It then applies the requested transformation, but because there is no ZData property on Image objects, it can only update the XData and YData properties, and the image remains in the x-y plane.
If you want to rotate images, you should use the hgtranform and makehgtform commands instead. For example, the following code will rotate both the line and image 45 degrees around the x-axis.
x = 100:100:1000;
y = randi(10,1,10)*50;
figure;
ax = axes;
ht = hgtransform(ax);
h = plot(ht, x,y);
im = imread('football.jpg');
i = image(ht, im);
ht.Matrix = makehgtform('xrotate', pi/4)
view(3)
the hgtranform and makehgtform commands instead. For example, the following code will rotate both the line and image 45 degrees around the x-axis.
Note: You can also see an alternative solution in the following link.
- How do I insert an image in my 2-D and 3-D plots in MATLAB 8.2 (R2013b)?
0 Commenti
Più risposte (0)
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!