Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Cách xoay video trong OpenCV C++


Giới thiệu

Xoay video tương tự xoay ảnh, khác là nguồn đầu vào là luồng video từ camera hoặc file. Dùng getRotationMatrix2D tạo ma trận biến đổi affine, warpAffine áp dụng. Trackbar điều chỉnh góc xoay real-time.

Chương trình xoay video

#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);
    namedWindow("OriginalVideo");
    namedWindow("RotatedVideo");
    int rotating_angle = 180;
    createTrackbar("Rotation", "RotatedVideo", &rotating_angle, 360);

    while (true) {
        Mat before_Rotating; loadvideo.read(before_Rotating);
        imshow("OriginalVideo", before_Rotating);

        Mat for_Rotation = getRotationMatrix2D(Point(before_Rotating.cols/2, before_Rotating.rows/2), rotating_angle - 180, 1);
        Mat after_Rotating;
        warpAffine(before_Rotating, after_Rotating, for_Rotation, before_Rotating.size());
        imshow("RotatedVideo", after_Rotating);

        if (waitKey(30) == 27) break;
    }
    return 0;
}

Kết quả

Hai cửa sổ: "OriginalVideo" video gốc, "RotatedVideo" video đã xoay. Trackbar "Rotation" điều chỉnh góc 0-360 độ.