python图像变换教程(详解python-图像处理映射变换)
类别:脚本大全 浏览量:2193
时间:2021-10-27 10:07:45 python图像变换教程
详解python-图像处理映射变换做计算机视觉方向,除了流行的各种深度学习算法,很多时候也要会基础的图像处理方法。
记录下opencv的一些操作(图像映射变换),日后可以方便使用
先上一张效果图
图二和图三是同一种方法,只是变换矩阵不同,都是3点映射变换
图四使用的是4点映射变换
简单介绍下原理
图像都知道是3维(通道)的矩阵,前两维就是由1字节(0-255)数字填充的二维数组。数字大小代表颜色的深浅。
我们把变换前的原图作为x和y。变换后的图为u和v。将[x,y,1]乘上变换矩阵就可以得到对应的新的u和v。不同的变换矩阵有不同的作用(不同的变换方式)
所以现在就是求不同变换对应的不同的变换矩阵的过程
求这个矩阵 在opencv中直接就有方法
只需提供原图的三个点和你要变换之后的三个点的映射位置(3个原图点,3个映射点)就可以求出这个变换矩阵
当然了 你会发现不管怎么调整映射点 都不能任意变换
因为只给三个点时 变换之后的图其实只是原图的等比缩放,并不能做到随意映射的效果
这里opencv也提供了 四个点和四个映射的方法 求出对应的变换矩阵 ,最终得到任意映射的效果
代码如下:
|
# 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" alt="python图像变换教程(详解python-图像处理映射变换)" border="0" /> 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-图像处理(映射变换)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
原文链接:https://www.cnblogs.com/bob-jianfeng/p/10574401.html
您可能感兴趣
- python代码如何进行切片索引(Python读取Pickle文件信息并计算与当前时间间隔的方法分析)
- pythonlogging模块教学(详解Python logging调用Logger.info方法的处理过程)
- pythonmatplotlib怎么用(Python matplotlib画图与中文设置操作实例分析)
- python电脑端微信自动化(python使用wxpy实现微信消息防撤回脚本)
- python去除字符串中间的空格(Python去除字符串前后空格的几种方法)
- python坐标输入(python导入坐标点的具体操作)
- python将一个字符串逆序输出(Python字符串逆序输出的实例讲解)
- pythondjango后台管理(基于腾讯云服务器部署微信小程序后台服务Python+Django)
- python 模式识别(python实现全盘扫描搜索功能的方法)
- python批量自动化访问网站(python 自动批量打开网页的示例)
- 如何用python爬取最新电影(使用python实现抓取腾讯视频所有电影的爬虫)
- python如何对参数长度进行限制(python 多个参数不为空校验方法)
- python密码错误3次不能再输入(Python实现账号密码输错三次即锁定功能简单示例)
- python中mat文件怎么读(Python第三方库h5py_读取mat文件并显示值的方法)
- python数据类型基本知识入门(Python Pexpect库的简单使用方法)
- python算法图解(python实现kmp算法的实例代码)
- 一个30岁男人外遇失败的全过程(一个30岁男人外遇失败的全过程)
- 《无敌破坏王2》 不聊彩蛋,聊聊我从动画里看到的现实那些事儿(无敌破坏王2不聊彩蛋)
- 《寄生虫》 三观不正 人类悲欢从来不相通,感同身受也并非本能(寄生虫三观不正)
- 这部动漫中的女孩子,可比101女孩更加励志(这部动漫中的女孩子)
- 《白狐的人生》热拍 贾征宇偶像包袱难自弃 图(白狐的人生热拍)
- 七夕取消了,牛郎织女没做核酸七夕已经取消(牛郎织女没做核酸七夕已经取消)
热门推荐
- python time模块记录时间(Python Datetime模块和Calendar模块用法实例分析)
- thinkphp5.1请求流程(ThinkPHP5.0框架使用build 自动生成模块操作示例)
- asp.net使用swfupload上传
- wampserver安装后怎样设置(怎么修改wampserver默认的浏览器)
- 如何启动wampserver数据库服务(wampserver更改默认站点目录www方法教程)
- myisam和innodb的区别
- python字符串找一个最大字符(Python查找最长不包含重复字符的子字符串算法示例)
- ftp服务器怎么搭建linux(Linux下使用vsftp搭建FTP服务器附参数说明)
- mysql常见的存储引擎(如何选择MySQL的存储引擎?)
- ASP.NET mvc异常处理的方法
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9