Python 在OpenCV里实现仿射变换—坐标变换效果


Posted in Python onAugust 30, 2019

在现实的图像操作软件中,经常碰到的不是给出放大多少倍,而是由用户在软件的界面上选择多大的区域,或者选择几个点,那么这样情况下,怎么样来计算出变换矩阵呢?从前面知道变换矩阵是2X3的矩阵,说明有六个未知数,又有中学的代数知识知道要解决六个未知数,那么方程组至少要联立三条方程,要准备三条方程的先决条件,就是要有三组坐标。因此,只要在用户选择的区域里找到三个不同点的坐标,就可以计算出变换矩阵。如果给出三组坐标[0, 0], [200, 0], [0, 200],通过变换之后新坐标是[0, 0], [128, 0], [0, 50],那用什么函数来计算这个矩阵呢?这是要使用OpenCV里的getAffineTransform函数。

下面通过例子来演示这个功能:

#python 3.7.4,opencv4.1
#蔡军生 https://blog.csdn.net/caimouse/article/details/51749579
#
import cv2
import numpy as np
#图片的路径
imgname = "img1.jpg"
#读取图片
image = cv2.imread(imgname, cv2.IMREAD_COLOR)
#图片的高度和宽度
h,w = image.shape[:2]
#从目标坐标计算出2X3的矩阵,然后调用warpAffine执行
src = np.array([[0, 0], [200, 0], [0, 200]], np.float32)
dst = np.array([[0, 0], [128, 0], [0, 50]], np.float32)
A1 = cv2.getAffineTransform(src, dst)
d1 = cv2.warpAffine(image, A1, (w, h), borderValue = 125)
#显示操作之后的图片
cv2.imshow("d1",d1)
#显示图像
cv2.imshow("image", image)
#等待用户输入,然后删除所有窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

Python 在OpenCV里实现仿射变换—坐标变换效果

使用坐标变换的方法,可以不用知道中间是否先旋转,还是先平移的操作。

总结

以上所述是小编给大家介绍的Python 在OpenCV里实现仿射变换—坐标变换效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python利用sklearn包编写决策树源代码
Dec 21 Python
Python使用matplotlib模块绘制图像并设置标题与坐标轴等信息示例
May 04 Python
python获取代码运行时间的实例代码
Jun 11 Python
flask入门之文件上传与邮件发送示例
Jul 18 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
python实现图片横向和纵向拼接
Mar 05 Python
python如何输出反斜杠
Jun 18 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
Jul 02 Python
Python必须了解的35个关键词
Jul 16 Python
基于python实现操作git过程代码解析
Jul 27 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 Python
Python代码实现双链表
May 25 Python
python在OpenCV里实现投影变换效果
Aug 30 #Python
python 模拟贷款卡号生成规则过程解析
Aug 30 #Python
Python之数据序列化(json、pickle、shelve)详解
Aug 30 #Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 #Python
python获取Linux发行版名称
Aug 30 #Python
python实现ip地址查询经纬度定位详解
Aug 30 #Python
Django 对IP访问频率进行限制的例子
Aug 30 #Python
You might like
PHP脚本的10个技巧(6)
2006/10/09 PHP
PHP的中问验证码
2006/11/25 PHP
PHP图片验证码制作实现分享(全)
2012/05/10 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
Javascript注入技巧
2007/06/22 Javascript
第一个JavaScript入门基础 document.write输出
2010/02/22 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
jsp 自动编译机制详细介绍
2016/12/01 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
2017/03/15 Javascript
jQuery解析json格式数据示例
2018/09/01 jQuery
Vuex的API文档说明详解
2020/02/05 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
微信小程序手动添加收货地址省市区联动
2020/05/18 Javascript
jQuery 隐藏/显示效果函数用法实例分析
2020/05/20 jQuery
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
在Python中利用Pandas库处理大数据的简单介绍
2015/04/07 Python
python的keyword模块用法实例分析
2015/06/30 Python
python中os和sys模块的区别与常用方法总结
2017/11/14 Python
详解python3中zipfile模块用法
2018/06/18 Python
python getpass模块用法及实例详解
2019/10/07 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
美国在线艺术商店:HandmadePiece
2020/11/06 全球购物
犹他州最古老的体育用品公司:Al’s
2020/12/18 全球购物
医院护士求职自荐信格式
2013/09/21 职场文书
大学生职业生涯规划范文
2014/01/08 职场文书
转预备党员政审材料
2014/02/06 职场文书
高一学年自我鉴定范文(3篇)
2014/09/26 职场文书
经典搞笑版检讨书
2015/02/19 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
干货:如何写好工作计划!
2019/05/17 职场文书
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL