OpenCV——透视变换[通俗易懂]

OpenCV——透视变换[通俗易懂]透视变换是按照物体成像投影规律进行变换,即将物体重新投影到新的成像平面,示意图如图3-24所示。透视变换常用于机器人视觉导航研究中,由于相机视场与地面存在倾斜角使得物体成像产生畸变,通常通过透视变换实现对物体图像的校正。透视变换中,透视前的图像和透视后的图像之间的变换关系可以用一个3×3的变换矩阵表示,该矩阵可以通过两张图像中四个对应点的坐标求取,因此透视变换又称作“四点变换”。根据四个对应点求取变换矩阵的getPerspectiveTransform()函数和进行透视变换的warpPerspectiv

大家好,欢迎来到IT知识分享网。

透视变换是按照物体成像投影规律进行变换,即将物体重新投影到新的成像平面,示意图如图所示。透视变换常用于机器人视觉导航研究中,由于相机视场与地面存在倾斜角使得物体成像产生畸变,通常通过透视变换实现对物体图像的校正。透视变换中,透视前的图像和透视后的图像之间的变换关系可以用一个3×3的变换矩阵表示,该矩阵可以通过两张图像中四个对应点的坐标求取,因此透视变换又称作“四点变换”。

根据四个对应点求取变换矩阵的getPerspectiveTransform()函数和进行透视变换的warpPerspective()函数

透视变换原理示意图

Mat getPerspectiveTransform( const Point2f src[], const Point2f dst[] );

IT知识分享网

 

IT知识分享网void warpPerspective( InputArray src, OutputArray dst,
                                   InputArray M, Size dsize,
                                   int flags = INTER_LINEAR,
                                   int borderMode = BORDER_CONSTANT,
                                   const Scalar& borderValue = Scalar());
  • src:输入图像。
  • dst:透视变换后输出图像,与src数据类型相同,但是尺寸与dsize相同。
  • M:3×3的变换矩阵。
  • dsize:输出图像的尺寸。
  • flags:插值方法标志。
  • borderMode:像素边界外推方法的标志。
  • borderValue:填充边界使用的数值,默认情况下为0

简答示例:

//
// Created by smallflyfly on 2021/6/10.
//


#include "opencv2/opencv.hpp"
#include "opencv2/highgui.hpp"

#include <iostream>

using namespace cv;
using namespace std;

int main() {

    Mat im = imread("test.jpg");

    Point2f srcPoints[4];
    Point2f dstPoints[4];

    srcPoints[0] = Point2f(20, 30);
    srcPoints[1] = Point2f(50, 100);
    srcPoints[2] = Point2f(200, 400);
    srcPoints[3] = Point2f(500, 800);

    dstPoints[0] = Point2f(45, 120);
    dstPoints[1] = Point2f(80, 250);
    dstPoints[2] = Point2f(300, 500);
    dstPoints[3] = Point2f(600, 600);

    Mat r, warp;
    r = getPerspectiveTransform(srcPoints, dstPoints);
    warpPerspective(im, warp, r, im.size());

    imshow("warp", warp);

    waitKey(0);

    destroyAllWindows();

    return 0;

}

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/10721.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信