OpenCV学习笔记_图像扭曲及旋转操作

#include<cv.h>
#include<highgui.h>

using namespace std;

int main(void){
	CvPoint2D32f srcTri[3], dstTri[3];
	//量化矩阵的创建
	//旋转
	CvMat* rot_mat = cvCreateMat(2, 3, CV_32FC1);
	//扭曲
	CvMat* warp_mat = cvCreateMat(2, 3, CV_32FC1);
	IplImage *src, *dst;
	src = cvLoadImage("d:\\testPic\\1.jpeg");
	if(src != 0){
		//为dst申请空间,类似使用cvCreateImage();
		dst = cvCloneImage(src);
		dst->origin = src->origin;
		cvZero(dst);

		//compute warp matrix
		//在原图上确定一个三角形,再确定映射到目标图像上的三角形
		srcTri[0].x = 0;
		srcTri[0].y = 0;
		srcTri[1].x = src->width - 1;
		srcTri[1].y = 0;
		srcTri[2].x = 0;
		srcTri[2].y = src->height - 1;
		dstTri[0].x = src->width * 0.0;
		dstTri[0].y = src->height * 0.33;
		dstTri[1].x = src->width * 0.85;
		dstTri[1].y = src->height * 0.25;
		dstTri[2].x = src->width * 0.15;
		dstTri[2].y = src->height * 0.7;

		//获取量化矩阵
		cvGetAffineTransform(srcTri, dstTri, warp_mat);
		//仿射变换
		cvWarpAffine(src, dst, warp_mat);
		cvNamedWindow("Affine_Transform", 1);
		cvShowImage("Affine_Transform", dst);
		cvWaitKey();
		cvCopy(dst, src);

		//compute rotation matrix
		//获取旋转中心
		CvPoint2D32f center = cvPoint2D32f(src->width / 2, src->height / 2);
		//旋转角度
		double angle = 90.0;
		//扩展比例
		double scale = 1;
		//获取量化矩阵
		cv2DRotationMatrix(center, angle, scale, rot_mat);
		//仿射变换
		cvWarpAffine(src, dst, rot_mat);
		cvShowImage("Affine_Transform", dst);
		cvWaitKey();
	}
	cvReleaseImage(&dst);
	cvReleaseMat(&rot_mat);
	cvReleaseMat(&warp_mat);
	return 0;
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值