详解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处理json数据中的中文
Mar 06 Python
python根据出生日期返回年龄的方法
Mar 26 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
图文讲解选择排序算法的原理及在Python中的实现
May 04 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
查看TensorFlow checkpoint文件中的变量名和对应值方法
Jun 14 Python
pygame游戏之旅 如何制作游戏障碍
Nov 20 Python
Django urls.py重构及参数传递详解
Jul 23 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
python matplotlib 画dataframe的时间序列图实例
Nov 20 Python
python如何获取apk的packagename和activity
Jan 10 Python
关于python中remove的一些坑小结
Jan 04 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/09/07 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
Laravel的throttle中间件失效问题解决方法
2016/10/09 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
JavaScript的Function详细
2006/11/14 Javascript
用javascript实现画板的代码
2007/09/05 Javascript
我的NodeJs学习小结(一)
2014/07/06 NodeJs
跟我学习javascript的异步脚本加载
2015/11/20 Javascript
Jquery ajax加载等待执行结束再继续执行下面代码操作
2015/11/24 Javascript
js实现正则匹配中文标点符号的方法
2015/12/23 Javascript
15个非常实用的JavaScript代码片段
2016/12/18 Javascript
js实现简单的二级联动效果
2017/03/09 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
js实现图片加载淡入淡出效果
2017/04/07 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
原生JS实现获取及修改CSS样式的方法
2018/09/04 Javascript
node使用request请求的方法
2019/12/20 Javascript
vue实现移动端拖动排序
2020/08/21 Javascript
Python实现的数据结构与算法之链表详解
2015/04/22 Python
详解python单例模式与metaclass
2016/01/15 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
python自动保存百度盘资源到百度盘中的实例代码
2019/08/26 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
Python实现异步IO的示例
2020/11/05 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
新春寄语大全
2014/04/09 职场文书
政协调研汇报材料
2014/08/15 职场文书
员工年终自我评价
2014/09/14 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
介绍信范文大全
2015/05/07 职场文书
二审答辩状格式
2015/05/22 职场文书
电影建党伟业观后感
2015/06/01 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery