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中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python学习之Anaconda的使用与配置方法
Jan 04 Python
对Python中plt的画图函数详解
Nov 07 Python
Python中对数组集进行按行打乱shuffle的方法
Nov 08 Python
django orm 通过related_name反向查询的方法
Dec 15 Python
python中partial()基础用法说明
Dec 30 Python
用python实现刷点击率的示例代码
Feb 21 Python
Pythony运维入门之Socket网络编程详解
Apr 15 Python
Python Process多进程实现过程
Oct 22 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
Python 获取numpy.array索引值的实例
Dec 06 Python
Python获取指定网段正在使用的IP
Dec 14 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配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
js弹出层之1:JQuery.Boxy (二)
2011/10/06 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
AngularJs Modules详解及示例代码
2016/09/01 Javascript
基于js实现的限制文本框只可以输入数字
2016/12/05 Javascript
nodejs利用http模块实现银行卡所属银行查询和骚扰电话验证示例
2016/12/30 NodeJs
iscroll实现下拉刷新功能
2017/07/18 Javascript
详解react服务端渲染(同构)的方法
2017/09/21 Javascript
JS 中使用Promise 实现红绿灯实例代码(demo)
2017/10/20 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
2019/09/26 Javascript
微信小程序实现登录注册功能
2020/12/29 Javascript
python命令行参数sys.argv使用示例
2014/01/28 Python
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Python 批量合并多个txt文件的实例讲解
2018/05/08 Python
Python实现在某个数组中查找一个值的算法示例
2018/06/27 Python
经济实惠的豪华家具:My-Furniture
2019/03/12 全球购物
英国领先的酒杯和水晶玻璃器皿制造商:Dartington Crystal
2019/06/23 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
数控专业毕业生求职信范文
2013/09/21 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
基层党员学习党的群众路线教育实践活动心得体会
2014/11/04 职场文书
幼师自荐信范文
2015/03/06 职场文书
公司员工体检通知
2015/04/21 职场文书
狂人日记读书笔记
2015/06/30 职场文书
2016班级元旦联欢会开幕词
2016/03/04 职场文书