仿射变换 图像旋转

#include <stdio.h>
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace std;
using namespace cv;


int main(int argc, char** argv)
{
	// 图像矩阵
	Mat src, dstWarp, dstWarpRtaiton;

	// 读取图像
	src = imread("road.jpg");
	if (src.empty())
	{
		cout << "No Data!---- the error of redding imge." << endl;
		return -1;
	}

	// 设置目标图像和源图像大小一致
	dstWarp = Mat::zeros(src.rows, src.cols, src.type());
	dstWarpRtaiton = Mat::zeros(src.rows, src.cols, src.type());

	// 变化矩阵
	Mat WarpMat(2, 3, CV_32FC1);
	Mat RotationMat(2, 3, CV_32FC1);


	// 两幅图像的两组点坐标
	Point2f srcTri[3];
	Point2f dstTri[3];

	srcTri[0] = Point2f(0.0, 0.0);
	srcTri[1] = Point2f(src.cols - 1.0, 0.0);
	srcTri[2] = Point2f(0.0, src.rows - 1.0);

	dstTri[0] = Point2f(src.cols * 0.0, src.rows * 0.33);
	dstTri[1] = Point2f(src.cols * 0.85, src.rows * 0.21);
	dstTri[2] = Point2f(src.cols * 0.15, src.rows * 0.7);
                

	// 求得放射变换 
	WarpMat = getAffineTransform(srcTri, dstTri);

	// 对源图像应用获得的放射变换矩阵
	warpAffine(src, dstWarp, WarpMat, dstWarp.size());


	//  计算绕图像中点顺时针旋转50度, 缩放因子为0.6的旋转矩阵
	Point2f center(dstWarpRtaiton.rows * 0.5, dstWarpRtaiton.rows * 0.5);
	double angel = -50;
	double scale = 0.6;
    RotationMat  = getRotationMatrix2D(center, angel, scale);

	// 旋转已扭曲图像
	warpAffine(dstWarp, dstWarpRtaiton, RotationMat, dstWarpRtaiton.size());

	
	char* source_window  = "Source Image Window";
	namedWindow(source_window, CV_WINDOW_AUTOSIZE);
	imshow(source_window, src);

	char* warp_window = "Warp Image Window";
	namedWindow(warp_window, CV_WINDOW_AUTOSIZE);
	imshow(warp_window, dstWarp);

	char* warp_rotation_window = "Warp Rotation Image";
	namedWindow(warp_rotation_window, CV_WINDOW_AUTOSIZE);
    imshow(warp_rotation_window, dstWarpRtaiton);

	waitKey(0);

	return 0;	
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值