Using imrotate creates empty array

1 visualización (últimos 30 días)
Jamie Bossenbroek
Jamie Bossenbroek el 20 de Feb. de 2019
Comentada: Walter Roberson el 20 de Feb. de 2019
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 comentarios
Walter Roberson
Walter Roberson el 20 de Feb. de 2019
Is it possible that your original RGB is 1 x 468 x 3 ??
Jamie Bossenbroek
Jamie Bossenbroek el 20 de Feb. de 2019
Yes it is

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 20 de Feb. de 2019
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 comentario
Walter Roberson
Walter Roberson el 20 de Feb. de 2019
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.

Iniciar sesión para comentar.

Categorías

Más información sobre Image Processing Toolbox en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by