详解python-图像处理(映射变换)


Posted in Python onMarch 22, 2019

做计算机视觉方向,除了流行的各种深度学习算法,很多时候也要会基础的图像处理方法。

记录下opencv的一些操作(图像映射变换),日后可以方便使用

先上一张效果图

详解python-图像处理(映射变换)

图二和图三是同一种方法,只是变换矩阵不同,都是3点映射变换

图四使用的是4点映射变换

简单介绍下原理

图像都知道是3维(通道)的矩阵,前两维就是由1字节(0-255)数字填充的二维数组。数字大小代表颜色的深浅。

我们把变换前的原图作为x和y。变换后的图为u和v。将[x,y,1]乘上变换矩阵就可以得到对应的新的u和v。不同的变换矩阵有不同的作用(不同的变换方式)

详解python-图像处理(映射变换)

所以现在就是求不同变换对应的不同的变换矩阵的过程

求这个矩阵 在opencv中直接就有方法

只需提供原图的三个点和你要变换之后的三个点的映射位置(3个原图点,3个映射点)就可以求出这个变换矩阵

详解python-图像处理(映射变换)详解python-图像处理(映射变换)

当然了 你会发现不管怎么调整映射点 都不能任意变换

因为只给三个点时 变换之后的图其实只是原图的等比缩放,并不能做到随意映射的效果

这里opencv也提供了 四个点和四个映射的方法 求出对应的变换矩阵 ,最终得到任意映射的效果

详解python-图像处理(映射变换)

代码如下:

# coding=gbk
import cv2
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号

img=cv2.imread(r"test6.jpg")
img = img[:,:,[2,1,0]]
cols,rows,ch=img.shape

pts1 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])         #三点映射
pts2 = np.float32([[0, 0], [cols - 1, 0], [80, rows - 1]])
pts21 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1]])
pts22 = np.float32([[cols * 0.2, rows * 0.1], [cols * 0.9, rows * 0.2], [cols * 0.1, rows * 0.9]])
pts31 = np.float32([[0, 0], [cols - 1, 0], [0, rows - 1],[cols - 1,rows-1]])    #四点映射
pts32 = np.float32([[0, 0], [cols - 1, 0], [50, rows - 1],[cols - 50,rows-50]])

M = cv2.getAffineTransform(pts1,pts2)              #求三点映射的变换矩阵
M2= cv2.getAffineTransform(pts21,pts22)
M3 = cv2.getPerspectiveTransform(pts31,pts32)            #求四点映射的变换矩阵

dst = cv2.warpAffine(img,M,(rows+120,cols))            #三点映射的变换函数
dst2 = cv2.warpAffine(img,M2,(rows,cols))            
dst3 = cv2.warpPerspective(img,M3,(rows+40,cols+50))          #四点映射的变换函数

plt.subplot(221)
plt.imshow(img)
plt.title("原图")
plt.subplot(222)
plt.imshow(dst)
plt.title("投影变换")
plt.subplot(223)
plt.imshow(dst2)
plt.title("仿射原图变换")
plt.subplot(224)
plt.imshow(dst3)
plt.title("仿射不规则变换")

plt.show()

以上所述是小编给大家介绍的python-图像处理(映射变换)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python使用Socket(Https)Post登录百度的实现代码
May 18 Python
Python实现的桶排序算法示例
Nov 29 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
Python合并多个Excel数据的方法
Jul 16 Python
详解python运行三种方式
May 13 Python
Pytorch修改ResNet模型全连接层进行直接训练实例
Sep 10 Python
Python assert关键字原理及实例解析
Dec 13 Python
Python使用sqlite3模块内置数据库
May 07 Python
python中什么是面向对象
Jun 11 Python
pandas:get_dummies()与pd.factorize()的用法及区别说明
May 21 Python
python脚本框架webpy的url映射详解
Nov 20 Python
Python的代理类实现,控制访问和修改属性的权限你都了解吗
Mar 21 Python
python中如何使用分步式进程计算详解
Mar 22 #Python
浅谈Python基础—判断和循环
Mar 22 #Python
浅谈python常用程序算法
Mar 22 #Python
python实现移位加密和解密
Mar 22 #Python
python实现可逆简单的加密算法
Mar 22 #Python
python实现字符串加密 生成唯一固定长度字符串
Mar 22 #Python
详解Python循环作用域与闭包
Mar 21 #Python
You might like
php学习 函数 课件
2008/06/15 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
ThinkPHP表单自动验证实例
2014/10/13 PHP
PHP闭包函数详解
2016/02/13 PHP
ExtJS TabPanel beforeremove beforeclose使用说明
2010/03/31 Javascript
google 搜索框添加关键字实现代码
2010/04/24 Javascript
javascript学习基础笔记之DOM对象操作
2011/11/03 Javascript
jquery中 $.expr使用实例介绍
2014/06/09 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
深入理解JavaScript中的call、apply、bind方法的区别
2016/05/30 Javascript
jQuery 移动端拖拽(模块化开发,触摸事件,webpack)
2016/10/28 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
详解Vue使用命令行搭建单页面应用
2017/05/24 Javascript
javascript中神奇的 Date对象小结
2017/10/12 Javascript
Javascript格式化并高亮xml字符串的方法及注意事项
2018/08/13 Javascript
20个必会的JavaScript面试题(小结)
2019/07/02 Javascript
layui实现数据表格点击搜索功能
2020/03/26 Javascript
JS实现的定时器展示简单秒表、页面弹框及跳转操作完整示例
2020/01/26 Javascript
如何解决jQuery 和其他JS库的冲突
2020/06/22 jQuery
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
python类继承用法实例分析
2014/10/10 Python
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python判断Abundant Number的方法
2015/06/15 Python
python3+django2开发一个简单的人员管理系统过程详解
2019/07/23 Python
Python:slice与indices的用法
2019/11/25 Python
基于python读取.mat文件并取出信息
2019/12/16 Python
Python @property装饰器原理解析
2020/01/22 Python
Pyqt助手安装PyQt5帮助文档过程图解
2020/11/20 Python
英国派对礼服和连衣裙购物网站:TFNC London
2018/07/07 全球购物
花店创业计划书范文
2014/02/07 职场文书
机关党员2014全国两会学习心得体会
2014/03/10 职场文书
社区活动策划方案
2014/08/21 职场文书
保卫工作个人总结
2015/03/03 职场文书
校园广播站开场白
2015/06/01 职场文书