python 图像扭曲 opencv仿射变换 cv2.getAffineTransform() cv2.warpAffine()应用实例
目前要做数学公式图像数据增强,然后需要做图像扭曲,查阅opencv的相关资料记录一下自己的应用例子。
图像扭曲就是在图像上应用仿射变换,然后我用的方法是用python OpenCV,主要用到 cv2.getAffineTransform(),cv2.warpAffine()这两个函数。以下是我的代码示例
import cv2
import numpy as npdef AffineTrans(img):rows, cols = img.shapepts1 = np.float32([[20, 20], [30, 20], [20, 0]]) # 源图像中的三角形顶点坐标pts2 = np.float32([[20, 20], [30, 20], [25, 0]]) # 目标图像中的三角形顶点坐标M = cv2.getAffineTransform(pts1, pts2) # 计算出仿射变换矩阵dst = cv2.warpAffine(img, M, (cols, rows)) # 应用仿射变换return dstif __name__ == '__main__':img = cv2.imread(ImageName)affine_img = AffineTrans(img)
仿射变换的原理就是根据源图像中一个三角形的顶点坐标和应用仿射变换之后的目标图像中一个三角形的顶点坐标计算出一个变换矩阵,然后将这个矩阵应用到整个源图像。网上有很多介绍的帖子我就不多说了,只说说这个代码具体参数设置原理。
pts1 = np.float32([[20, 20], [30, 20], [20, 0]])
pts2 = np.float32([[20, 20], [30, 20], [25, 0]])
上面这两行代码就是设置的源图像(pts1)和目标图像(pts2)的顶点坐标(这个可以根据自己的数据自行设置,因为我的图像较小所以我的坐标设置的小),意思就是我们要将原图中的三角形坐标通过一个变换矩阵转换成目标图像中的坐标,如下所示:
红色是原图中的三角形,绿色是应用仿射变换之后的目标图像的三角形,根据这个设置应用仿射变换之后图像应该像左边扭曲,有了这两个三角形的顶点坐标cv2.getAffineTransform()函数就能计算得到一个仿射变换矩阵,然后利用cv2.warpAffine()在原图应用仿射变换就得到了扭曲之后的图像。以下是上面代码运行结果实例(左边是原图,右边是应用仿射变换之后的图,可以看到图像是向左边倾斜了):
python 图像扭曲 opencv仿射变换 cv2.getAffineTransform() cv2.warpAffine()应用实例相关推荐
- 1.4 Python图像的坐标变换-仿射变换
1.4 Python图像的坐标变换-仿射变换 文章目录 1.4 Python图像的坐标变换-仿射变换 1 算法原理 2 代码 3 效果 1 算法原理 图像的几何变换,也就是矩阵乘法. 通过仿射变换将图 ...
- Python图像特效 OpenCV 油画 与 非真实感渲染 (Stylization水彩, edgePreservingFilter, detailEnhance, pencilSketch描绘)
简介 基于Python cv2做的图像风格转换,其中包括油画风格,水彩风格,图像在不影响边缘情况下进行平滑化,图像锐化,图像描绘风格等. Package-OpenCV, scipy下载 pip ins ...
- 【python】图像映射:单应性变换与图像扭曲
[python]图像映射:单应性变换与图像扭曲 单应性变换(Homography) 图像扭曲(仿射变换) 图中图 分段仿射扭曲 单应性变换(Homography) 单应性变换(Homography)即 ...
- 【笔记】opencv阈值处理 threshold函数 cv2.THRESH_BINARY ,cv2.THRESH_TRUNC) cv2.adaptiveThreshold()
像素是在模拟图像数字化时对连续空间进行离散化得到的.每个像素具有整数行(高)和列(宽)位置坐标,同时每个像素都具有整数灰度值或颜色值. threshold函数 返回的第一个参数为阈值,第二个为结果图像 ...
- Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()
Python,OpenCV图像金字塔cv2.pyrUp, cv2.pyrDown 1. 效果图 2. 原理 2.1 什么是图像金字塔 2.2 金字塔分类 2.3 应用 3. 源码 参考 这篇博客将介绍 ...
- 在Python中使用OpenCV(CV2)对图像进行边缘检测
Modules used: 使用的模块: For this, we will use the opencv-python module which provides us various functi ...
- opencv python 图像缩放/图像平移/图像旋转/仿射变换/透视变换
Geometric Transformations of Images 1图像转换 OpenCV提供了两个转换函数cv2.warpAffine和cv2.warpPerspective,可以使用它们进行 ...
- Py之cv2:cv2(OpenCV,opencv-python)库的简介、安装、使用方法(常见函数、图像基本运算等)最强详细攻略
Py之cv2:cv2(OpenCV,opencv-python)库的简介.安装.使用方法(常见函数.图像基本运算等)最强详细攻略 目录 cv2(OpenCV,opencv-python)库的简介 1. ...
- python -opencv 使用滑动条 cv2.createTrackbar,cv2.getTrackbarPos(), cv2.setTrackbarPos
python -opencv 使用滑动条 函数createTrackbar: cv2.createTrackbar("scale", "display", 0, ...
- python中的cv2模块能否保存图像的地理坐标信息_Python中plt.plot图像保存有白边,CV2.polyline,fillpoly的参数问题,图像保存颜色发生异常...
Python中,如果你遇到了PIL图像保存有白边,CV2.polyline,fillpoly,参数问题,图像保存颜色发生异常这几个问题,这篇文章就能够解决你的疑惑. 第一个问题,plt图像保存有白边 ...
最新文章
- TCP协议三次握手过程分析
- CentOS安装Mysql8各种坑。。。
- uniapp对象怎么获取值_第65p,关于:生成器、迭代器与迭代对象(上)
- 聚类算法小记(part2)--谱聚类
- python `__hash__`
- Redis源码解析(1)——源码目录介绍
- arcpy 基于python制作六十进制与十进制互换的工具箱
- 浙大计算机学硕名额,浙大计算机学硕复试线399分,专硕375,不愧被称为“炸大”...
- maven工程下管理module发布到SVN注意
- 第十届蓝桥杯 省赛研究生组 真题解析(Python)
- java postgresql jdbc驱动 下载,PostgreSQL的JDBC驱动和URL
- 创意信件风格论文答辩PPT模板
- 红外遥控接收发射原理及ESP8266实现
- 计算机网络实训心得总结,计算机网络实训心得体会_计算机网络学习经验总结...
- 计算机网络基础学习笔记
- 视频字幕添加软件有哪些?这有视频字幕添加的软件
- Idea Debug 窗口所有按钮详解
- 类似新浪微博评论的 @ 及 #某话题# 功能的实现
- 设置Ajax为同步请求
- 如何解决医院网站商务通无轨迹来源路径的问题