利用OpenCV实现图像的仿射变换

本文详细介绍了如何利用OpenCV库进行图像的仿射变换操作,通过指定源图像dst和输入图像input,结合浮点数参数,实现图像的平移、旋转和缩放等效果。内容涵盖变换矩阵的构建和应用,为图像处理提供了实用的技术指导。

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

利用OpenCV实现图像的仿射变换
仿射变换可以形象的表示成如下形式:一个平面内任意的平行四边形ABCD可以被仿射变换映射为另一个平行四边形A'B'C'D',如果四边形的面积不等于0,仿射变换就被这两个平行四边形(其中的三个顶点)唯一的定义,这里注意确定一个平行四边形只需要三个顶点。我们可以把仿射变换想象成把一幅图像画到一个胶板上,在胶板的角上推或拉以得到不同的平行四边形。
下面的程序实现了对图像的仿射变换,还包括图像旋转、缩放这两个重要的子集。

    #include <cv.h>
    #include <highgui.h>
    #include <stdio.h>
    #include <iostream.h>
    int main( int argc, char** argv )
    {
    CvPoint2D32f srcTri[3],dstTri[3];
    CvMat* rot_mat = cvCreateMat( 2, 3, CV_32FC1 );
    CvMat* warp_mat = cvCreateMat( 2, 3, CV_32FC1 );
    IplImage *src, *dst, *srcBak, *dstBak;
    int TLx = 0, TLy = 0, TRx = 0, TRy = 0, DLx = 0, DLy = 0;
    double angle = 40, scale = 0.8;
    float delta = 0.01;
    int PressKey;
    char name[1][80];
    if(!(src=cvLoadImage("C:/Users/jinxing/Desktop/Tests/test/Debug/lena.bmp",1)) )
    {
    printf("Input Error\n");
    return -1;
    }
    srcTri[0].x = 0;// Top left
    srcTri[0].y = 0;
    srcTri[1].x = src->width-1;//Top right
    srcTri[1].y = 0;
    srcTri[2].x = 0;//Down left
    srcTri[2].y = src->height-1;
&nb

开发板推荐:天空星STM32F407VET6开发板

超高性价比 STM32主控 | 超高主频 | 一板兼容百芯 | 比赛神器 | 沉金彩色丝印

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值