版本:opencv4.0.0 VS2015
本测试代码将图片不停旋转并输出avi
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
#include <stdio.h>
#include <string>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
using namespace cv;
using namespace std;
int main(int argc, char** argv) {
VideoWriter writer;
int isColor = 1;
int frame_fps = 30;
int frame_width = 320;
int frame_height = 240;
string video_name = "E:\\opencv\\pro\\out.avi";
writer = VideoWriter(video_name, CV_FOURCC('M', 'J', 'P', 'G'), frame_fps, Size(frame_width, frame_height), isColor);
Mat image = imread("E:\\opencv\\pro\\pic.jpg");
Point2f center = Point2f(image.cols / 2, image.rows / 2);//旋转中心
double angle = 30;//旋转角度
double scale = 1;//变换尺寸
Mat rotateMat;
rotateMat = getRotationMatrix2D(center, angle, scale);
Mat rotateImg;
warpAffine(image, rotateImg, rotateMat, image.size());
imshow("rotate.jpg", rotateImg);
waitKey(0);
int a = 0;
int b = 0;
while (b++ < 300)
{
if (a >= 360)
a = 0;
else
a += 10;
//destroyWindow("rotate.jpg");
angle = a;//旋转角度
scale = 1;//变换尺寸
rotateMat = getRotationMatrix2D(center, angle, scale);
warpAffine(image, rotateImg, rotateMat, image.size());
imshow("rotate.jpg", rotateImg);
resize(rotateImg, rotateImg, Size(320, 240));
// 流操作符,把图片传入视频
//writer << rotateImg;
writer.write(rotateImg);
waitKey(30);
}
return 0;
}