openCV之图像反转和旋转以及调用摄像头

文章目录

  • 1.图像反转
  • 2.图像旋转
  • 3.摄像头使用
  • 4.保存视频

1.图像反转

//图像反转
flip(image, dst, 0)//上下反转
flip(image, dst, 1)//左右反转
flip(image, dst, 1)//旋转180°

2.图像旋转

//图像旋转
rotate_demo(Mat &image)
{
	Mat dst;//目标图像
	double	angle = 45;//旋转角度
	Size	image_size = image.size();
	Size	dst_sz(image_size.height, image_size.width);//构造一个大小
	int		len = max(image.cols, image.rows);
	Point2f	center(len/2, len/2);//指定旋转中心
	Mat rot_mat = getRotationMatrix2D(center, ange1, 1.0);//获取旋转矩阵(2x3矩阵)
	warpAffine(image, dst,rot_mat, dst_sz);//根据旋转矩阵进行放射变换
	warpAffine(image, dst, rot_mat, dst_sz);
	imshow("image",image);
	imshow("dst",dst);
	
}

3.摄像头使用

//视频文件摄像头使用
video_demo_01(Mat &image)
{
	VideoCapture capture(0);//参数填0 表示调用摄像头,填视频地址 则可以播放视频
	Mat frame;
	while(true)
	{
		capture.read(frame);
		flip(frame, frame,1);
		if(frame.empty())
		{
			break;
		}
		imshow("frame", frame);
		int c = waitKey(10);
		if(c == 27)
		{
			break;
		}
	}
}

4.保存视频

video_demo_02(Mat &image)
{
	VideoCapture capture("../xx.mp4");
	int frame_width = capture.get(CAP_PROP_FRAME_WIDTH);
	int frame_height = capture.get(CAP_PROP_FRAME_HEIGHT);
	int count = capture.get(CAP_PROP_FRAME_COUNT);
	double fps = capture(CAP_PROP_FPS);
	cout<<"frame_width:"<<frame_width<<endl;
	cout<<"frame_height:"<<frame_height<<endl;
	cout<<"frame_fps:"<<fps<<endl;
	cout<<"frame_count:"<<count<<endl;
	VideoWriter writer("../test.mp4", capture.get(CAP_PROP_FOURCC),fps, Size(frame_width, frame_height), ture);
	Mat frame;
	while(true)
	{
		capture.read(frame);
		flip(frame, frame, 1);
		if(frame.empty())
		{
			break;
		}
		imshow("frame", frame);
		writer.write(frame);
	}
	capture.release();
	writer.release();
}

你可能感兴趣的:(燃犀的OpenCV笔记,opencv,计算机视觉,图像处理)