Computer >> Máy Tính >  >> Lập trình >> C ++

Làm thế nào để xoay một hình ảnh trong OpenCV bằng C ++?

Xoay hình ảnh bằng các chức năng tích hợp của OpenCV là một nhiệm vụ dễ dàng. Để xoay hình ảnh, chúng tôi phải sử dụng tệp tiêu đề 'highgui.hpp' và 'imgproc.hpp' và chúng tôi sẽ giới thiệu thêm các chức năng trong chương trình này để xử lý xoay hình ảnh.

Chương trình sau đây làm thế nào để xoay một hình ảnh trong OpenCV bằng C ++.

Ví dụ

#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;
}

Đầu ra

Làm thế nào để xoay một hình ảnh trong OpenCV bằng C ++?