ホームページ >バックエンド開発 >C++ >C++を使用してOpenCVでビデオを回転するにはどうすればよいですか?

C++を使用してOpenCVでビデオを回転するにはどうすればよいですか?

WBOY
WBOY転載
2023-09-07 18:37:01519ブラウズ

ビデオの回転は、画像の回転と似ています。唯一の違いは、静止画像を画像マトリックスにロードする代わりに、ビデオをロードするか、カメラからビデオ ストリームを取得することです。

ここでは、ビデオをロードする代わりに、カメラを使用してビデオをキャプチャします。動画ファイルを使用する場合は、動画ファイルのアドレスを正しく入力してください。

次のプログラムは、C を使用して OpenCV でビデオを回転する方法を示しています。

例 H2>
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(int argc, char* argv[]) {
   VideoCapture loadvideo(0);//capture video from default camera//
   namedWindow("OriginalVideo");//declaring window to show original video stream//
   namedWindow("RotatedVideo");//declaring window to show rotated video stream//
   int rotating_angle = 180;//initial rotation angle//
   createTrackbar("Rotation", "RotatedVideo", &rotating_angle, 360);//creating trackbar for rotation//
   while (true) {
      Mat before_Rotating;//declaring matrix for image before rotation//
      bool temp = loadvideo.read(before_Rotating);//load frames from video source to matrix//
      imshow("OriginalVideo", before_Rotating);//show image frames before rotation//
      Mat for_Rotation = getRotationMatrix2D(Point(before_Rotating.cols / 2, before_Rotating.rows / 2), (rotating_angle - 180), 1);//affine transformation matrix for the 2D rotation//
      Mat after_Rotating;//declaring matrix for image after rotation//
      warpAffine(before_Rotating, after_Rotating, for_Rotation, before_Rotating.size());//applying affine transformation//
      imshow("RotatedVideo", after_Rotating);//show image after rotating//
      if (waitKey(30) == 27){ //wait till Esc key is pressed from keyboard//
         break;
      }
   }
   return 0;
}

出力

C++を使用してOpenCVでビデオを回転するにはどうすればよいですか?

以上がC++を使用してOpenCVでビデオを回転するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。