如何使用 C++ 在 OpenCV 中旋转视频?
opencvc++server side programmingprogramming
旋转视频与旋转图像类似。唯一的区别在于,我们不是将静态图片加载到图像矩阵中,而是加载视频或从摄像头获取视频流。
这里,我们不是加载视频,而是使用摄像头拍摄视频。如果您想使用视频文件,只需正确输入视频文件的地址即可。
以下程序演示了如何使用 C++ 在 OpenCV 中旋转视频。
示例
#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 spinning_angle = 180;//初始旋转角度// createTrackbar(&"Rotation", &"RotatedVideo", &rotating_angle, 360);//创建用于旋转的轨迹条// while (true) { Mat before_Rotating;//声明旋转前图像的矩阵// bool temp = 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){//等待键盘上按下 Esc 键// break; } } return 0; }