详解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获取元素在数组中索引号的方法
Jul 15 Python
利用Python批量提取Win10锁屏壁纸实战教程
Mar 27 Python
pandas多级分组实现排序的方法
Apr 20 Python
Django中使用Celery的方法示例
Nov 29 Python
用python生成(动态彩色)二维码的方法(使用myqr库实现)
Jun 24 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
Windows下Anaconda和PyCharm的安装与使用详解
Apr 23 Python
python实现PDF中表格转化为Excel的方法
Jun 16 Python
python线性插值解析
Jul 05 Python
Python加速程序运行的方法
Jul 29 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
python爬虫scrapy基本使用超详细教程
Feb 20 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连接mssql数据库的几种方法
2013/02/21 PHP
php使用curl发送json格式数据实例
2013/12/17 PHP
php简单获取文件扩展名的方法
2015/03/24 PHP
php类的定义与继承用法实例
2015/07/07 PHP
php文件上传类的分享
2017/07/06 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
jQuery Div中加载其他页面的实现代码
2009/02/27 Javascript
jquery图片上下tab切换效果
2011/03/18 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
JavaScript采用递归算法计算阶乘实例
2015/08/04 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
jquery UI Datepicker时间控件的使用方法(基础版)
2015/11/07 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
vue调用高德地图实例代码
2017/04/28 Javascript
vue.js获取数据库数据实例代码
2017/05/26 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[52:14]VG vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python 判断奇数偶数的方法
2018/12/20 Python
python日志logging模块使用方法分析
2019/05/23 Python
python写文件时覆盖原来的实例方法
2020/07/22 Python
德国机车企业:FC-Moto
2017/10/27 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
酒店管理专业毕业生推荐信
2013/11/10 职场文书
医学院护理专业应届生求职信
2013/11/12 职场文书
2014年社区个人工作总结
2014/12/02 职场文书
党员剖析材料范文
2014/12/18 职场文书
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技