Improve the efficiency as suggested by vpisarev.

Alter the Rotation enum to be unambiguous as to direction.
pull/7539/head
Tetragramm 8 years ago
parent 6f7bf653f7
commit ad5c50a923
  1. 4
      modules/core/include/opencv2/core.hpp
  2. 20
      modules/core/src/copy.cpp

@ -1023,9 +1023,9 @@ around both axes.
CV_EXPORTS_W void flip(InputArray src, OutputArray dst, int flipCode);
enum RotateFlags {
ROTATE_90 = 0, //Rotate 90 degrees clockwise
ROTATE_90_CLOCKWISE = 0, //Rotate 90 degrees clockwise
ROTATE_180 = 1, //Rotate 180 degrees clockwise
ROTATE_270 = 2, //Rotate 270 degrees clockwise
ROTATE_90_COUNTERCLOCKWISE = 2, //Rotate 270 degrees clockwise
};
/** @brief Rotates a 2D array in multiples of 90 degrees.
The function rotate rotates the array in one of three different ways:

@ -832,14 +832,16 @@ static bool ocl_rotate(InputArray _src, OutputArray _dst, int rotateMode)
{
switch (rotateMode)
{
case ROTATE_90:
flip(_src.getUMat().t(), _dst, 1);
case ROTATE_90_CLOCKWISE:
_dst.getUMat() = _src.getUMat().t();
flip(_dst, _dst, 1);
break;
case ROTATE_180:
flip(_src, _dst, -1);
break;
case ROTATE_270:
flip(_src.getUMat().t(), _dst, 0);
case ROTATE_90_COUNTERCLOCKWISE:
_dst.getUMat() = _src.getUMat().t();
flip(_dst, _dst, 0);
break;
default:
break;
@ -856,14 +858,16 @@ void rotate(InputArray _src, OutputArray _dst, int rotateMode)
switch (rotateMode)
{
case ROTATE_90:
flip(_src.getMat().t(), _dst, 1);
case ROTATE_90_CLOCKWISE:
_dst.getMat() = _src.getMat().t();
flip(_dst, _dst, 1);
break;
case ROTATE_180:
flip(_src, _dst, -1);
break;
case ROTATE_270:
flip(_src.getMat().t(), _dst, 0);
case ROTATE_90_COUNTERCLOCKWISE:
_dst.getMat() = _src.getMat().t();
flip(_dst, _dst, 0);
break;
default:
break;

Loading…
Cancel
Save