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

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

Mat getPerspectiveTransform( const Point2f src[], const Point2f dst[] );
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;}

OpenCV——透视变换相关推荐

  1. OpenCV透视变换应用于图像的实例(附完整代码)

    OpenCV透视变换应用于图像的实例 OpenCV透视变换应用于图像的实例 OpenCV透视变换应用于图像的实例 #include "opencv2/imgproc.hpp" #i ...

  2. OpenCV透视变换应用于图像的实例(附完整源代码)

    OpenCV透视变换应用于图像的实例 透视变换应用于图像的实例完整源代码 透视变换应用于图像的实例完整源代码 #include "opencv2/imgproc.hpp" #inc ...

  3. 详解 OpenCV 透视变换原理 及 实例

    OpenCV提供了两种图片变换的方式:仿射变换和透视变换,两者的区别很容易区分, 前者是将矩形的图片变成平行四边形 后者是将图片变成梯形 这两种变换虽然都有各自的应用场景,但在实际的图片变换中由于透视 ...

  4. 使用OpenCV透视变换技术实现坐标变换实践

    1. 概述 1.1. 需求 在局部空间(无GPS定位)视频监控过程中,把视频识别到物体位置,投射到空间平面坐标系中,获取物体在局部空间的平面坐标. 1.2. 解决方案 使用图像透视变换技术. 1.3. ...

  5. OpenCV 透视变换 图像拼接

    A:OpenCV 透视变换 一:OpenCV透视变换的概念 仿射变换(affine transform)与透视变换(perspective transform)在图像还原.图像局部变化处理方面有重要意 ...

  6. opencv透视变换:GetPerspectiveTransform、warpPerspective函数的使用

    透视变换在图像还原的上的应用很广泛,他是将成像投影到一个新的视平面.比如两个摄像头在不同的角度对统一物体进行拍照,物体上的同一个点在两张照片上的坐标是不一样的,为了实现两张图片同一个点的对应关系映射, ...

  7. C++ OpenCV透视变换综合练习

    学更好的别人, 做更好的自己. --<微卡智享> 本文长度为3879字,预计阅读9分钟 前言 以前的文章<C++ OpenCV之透视变换>介绍过透视变换,当时主要是自己固定的变 ...

  8. OpenCV透视变换示例

    公众号推送看到的 由于深度学习平时训练的是pytorch框架的东西  传统opencv处理图像用的非常少 温故而知新 示例入下图 把这本书矫正 做法是 先缩小图二分之一,高斯模糊+边缘检测+膨胀 去噪 ...

  9. python opencv 透视变换

    可以缩小,不能放大: 只需要4个点坐标就可以了. # -*- coding: utf-8 -*- import os import numpy as np import cv2list_path = ...

最新文章

  1. linux webservice服务器端,Linux查看资源使用情况 webservice服务端口监控
  2. 关于架构的一点思考(一)
  3. COGS-363-土地购买-斜率优化
  4. DynamicDataDisplay 实时曲线图的使用和沿轴移动的效果
  5. linux lighttpd php,Ubuntu下搭建Lighttpd+PHP+MySQL环境
  6. matplotlib设置画布大小_PyTorch 49.matplotlib模块
  7. 【蓝桥杯单片机】DS1302时钟芯片+DS18B20单总线温度传感器(官方驱动源码改写)
  8. python的for语句要用冒号吗_python中循环的写法 for
  9. 余额宝技术架构及演进
  10. linux中fb0和fb1同时显示数据,Linux frame buffer驱动设计与实现
  11. selenium python自动化测试框架_基于Selenium+Python的web自动化测试框架
  12. HTML转义字符表的使用
  13. arm-linux-gcc 64位下载,arm-linux-gcc下载与安装
  14. 1416711-60-8,DBCO-PEG4-Hydroxyl,DBCO-PEG4-alcohol,DBCO-PEG4-OH含有DBCO部分和末端伯羟基的PEG连接剂
  15. AVD Android虚拟设备root教程
  16. 申请美国商务签证(B1/B2) -- 大连
  17. (1)简单易学—— 人脸检测 Tensorflow_MTCNN模型训练详细步骤(纯干货,适用于windows和ubuntu系统)
  18. CC00027.hadoop——|HadoopHive.V27|——|Hive.v27|Hive优化策略|实战.v03|
  19. 分支语句和循环语句<小罗爱学c语言>
  20. FreeBSD中安装源的方法

热门文章

  1. Errors while compiling. Reload prevented.
  2. 声明:博客内容不得用于商业用途,仅做学习交流。
  3. 【二分图匹配】【CSTC2000】丘比特的烦恼
  4. 第844期机器学习日报(2017-01-09)
  5. 连手机热点宿主机无法连上VMvare linux Centos
  6. 一则“孔乙己文学”,刺痛了多少学子的心?
  7. KOOCAN非正常电影排行榜之这个丧尸不太冷
  8. 优秀架构师必须掌握的架构思维 - 菜鸟架构(转载)
  9. 015. P2P技术详解(一):NAT详解——详细原理、P2P简介
  10. react native的WebView报错: Unable to open URL:****