*/
CV_EXPORTS_W void flip(InputArray src, OutputArray dst, int flipCode);
+enum RotateFlags {
+ ROTATE_90 = 0, //Rotate 90 degrees clockwise
+ ROTATE_180 = 1, //Rotate 180 degrees clockwise
+ ROTATE_270 = 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:
+* Rotate by 90 degrees clockwise (rotateCode = ROTATE_90).
+* Rotate by 180 degrees clockwise (rotateCode = ROTATE_180).
+* Rotate by 270 degrees clockwise (rotateCode = ROTATE_270).
+@param src input array.
+@param dst output array of the same type as src. The size is the same with ROTATE_180,
+and the rows and cols are switched for ROTATE_90 and ROTATE_270.
+@param rotateCode an enum to specify how to rotate the array; see the enum RotateFlags
+@sa transpose , repeat , completeSymm, flip, RotateFlags
+*/
+CV_EXPORTS_W void rotate(InputArray src, OutputArray dst, int rotateCode);
+
/** @brief Fills the output array with repeated copies of the input array.
The function cv::repeat duplicates the input array one or more times along each of the two axes:
flipHoriz( dst.ptr(), dst.step, dst.ptr(), dst.step, dst.size(), esz );
}
+#ifdef HAVE_OPENCL
+
+static bool ocl_rotate(InputArray _src, OutputArray _dst, int rotateMode)
+{
+ switch (rotateMode)
+ {
+ case ROTATE_90:
+ flip(_src.getUMat().t(), _dst, 1);
+ break;
+ case ROTATE_180:
+ flip(_src, _dst, -1);
+ break;
+ case ROTATE_270:
+ flip(_src.getUMat().t(), _dst, 0);
+ break;
+ default:
+ break;
+ }
+ return true;
+}
+#endif
+
+void rotate(InputArray _src, OutputArray _dst, int rotateMode)
+{
+ CV_Assert(_src.dims() <= 2);
+
+ CV_OCL_RUN(_dst.isUMat(), ocl_rotate(_src, _dst, rotateMode))
+
+ switch (rotateMode)
+ {
+ case ROTATE_90:
+ flip(_src.getMat().t(), _dst, 1);
+ break;
+ case ROTATE_180:
+ flip(_src, _dst, -1);
+ break;
+ case ROTATE_270:
+ flip(_src.getMat().t(), _dst, 0);
+ break;
+ default:
+ break;
+ }
+}
+
#if defined HAVE_OPENCL && !defined __APPLE__
static bool ocl_repeat(InputArray _src, int ny, int nx, OutputArray _dst)