#include<cv.h>
#include<highgui.h>
int main()
{
CvPoint2D32f srcTri[3], dstTri[3];
CvMat* rot_mat = cvCreateMat (2, 3, CV_32FC1);
CvMat* warp_mat = cvCreateMat (2, 3, CV_32FC1);
IplImage* src = NULL;
IplImage* dst = NULL;
src = cvLoadImage ("lena.jpg", 1);
dst = cvCloneImage (src);
dst->origin = src->origin;
cvZero (dst);
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);
cvCopy (dst, src);
CvPoint2D32f center = cvPoint2D32
仿射变换实例
最新推荐文章于 2024-08-05 06:26:23 发布
该博客通过C++代码展示了如何使用OpenCV库进行仿射变换,包括图像的旋转和缩放。首先,定义了源图像和目标图像的三角形顶点,然后通过`cvGetAffineTransform`和`cvWarpAffine`函数实现图像变形。接着,利用`cv2DRotationMatrix`创建旋转矩阵,再次应用`cvWarpAffine`进行旋转。最后,显示结果并等待用户按键退出。
摘要由CSDN通过智能技术生成