Using imrotate creates empty array

I am attempting to use imrotate to rotate an array by a given amount of degrees, but the output is all zeros.
I = rgb2ycbcr(RGB);
I = imrotate(I, angle, 'crop');
Where RGB is nx3 uint8 RGB variable from an .avi file from Vevo Software.

4 个评论

Could you confirm that RBG is 2 dimensional, not 3 dimensional ? If it is 2 dimensional, is it intended to be grayscale, or are you reading in a pseudocolor image and failing to apply the colormap to it?
Note: be careful, as color arrays are usually RGB rather than RBG.
RGB is a three dimensional color image:
Screen Shot 2019-02-20 at 4.14.00 PM.png
Is it possible that your original RGB is 1 x 468 x 3 ??

请先登录,再进行评论。

回答(1 个)

This seems to be an issue with imrotate when passed an array in which either the first or second dimension is 1, and the angle is not an exact multiple of 90. Even an angle of eps gives a 0 result.
WIth your array being only a single row high, and with you asking to 'crop', it is not obvious what output you are hoping for?
The workaround is to invoke
iptprefs
and to turn off "Enable hardware optimization (recommended)" near the bottom, and then Apply and OK. Then
clear images.internal.useIPPLibrary
After that, rotation will not unnecessarily produce an all-zero output.

1 个评论

I just filed a bug report on this.
It would not surprise me if the resolution would just be better documentation of the boundary condition failures and a pointer to turning off hardware processing. But perhaps they will be willing to check the output size and fall back to the software rotation for this case.

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Interactions, Camera Views, and Lighting 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by