How to rotate an image in OpenCV using C++?


Rotating image using built-in functions of OpenCV is an effortless task. To rotate image, we have to use 'highgui.hpp' and 'imgproc.hpp' header files and we will introduce more functions in this program which deal with image rotation.

The following program how to rotate an image in OpenCV using C++.

Example

#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(int argc, char** argv) {
   Mat before_rotation = imread("bright.jpg");//loading image to a matrix
   namedWindow("BeforeRotation");//Declaring window to show the original image//
   imshow("BeforeRotation", before_rotation);//showing the image before rotation//
   namedWindow("AfterRotation");//declaring window to show rotated image//
   int Rotation = 180;//initialization rotation angle//
   createTrackbar("Rotation", "AfterRotation", &Rotation, 360);//creating trackbar//
   int Height = before_rotation.rows / 2;//getting middle point of rows//
   int Width = before_rotation.cols / 2;//getting middle point of height//
   while (true) {
      Mat for_Rotation = getRotationMatrix2D(Point(Width, Height), (Rotation - 180), 1);//affine transformation matrix for 2D rotation//
      Mat for_Rotated;//declaring a matrix for rotated image
      warpAffine(before_rotation, for_Rotated, for_Rotation, before_rotation.size());//applying affine transformation//
      imshow("AfterRotation", for_Rotated);//show rotated image//
      int termination = waitKey(30);//allow system 30 millisecond time to create the rottion effect//
      if (termination == 27){ //terminate if Esc button is pressed//
         break;
      }
   }
   return 0;
}

Output

Updated on: 10-Mar-2021

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements