Python 在OpenCV里实现仿射变换—坐标变换效果
作者:caimouse 时间:2022-06-19 15:13:40
在现实的图像操作软件中,经常碰到的不是给出放大多少倍,而是由用户在软件的界面上选择多大的区域,或者选择几个点,那么这样情况下,怎么样来计算出变换矩阵呢?从前面知道变换矩阵是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里实现仿射变换—坐标变换效果,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/caimouse/article/details/100132398
标签:python,opencv,仿射变换,坐标变换
0
投稿
猜你喜欢
ASP 千万级数据分页的存储过程
2011-04-14 11:08:00
Django Rest framework认证组件详细用法
2023-02-20 09:47:08
python matplotlib绘图实现删除重复冗余图例的操作
2023-11-02 22:36:44
Windows XP操作系统下的MYSQL安装过程
2008-11-24 12:52:00
利用Python如何制作好玩的GIF动图详解
2023-03-02 10:47:47
百度百科的图片轮播代码
2009-05-06 12:58:00
Utf-8和Gb2312乱码问题的终结
2008-04-05 14:04:00
浅谈Python基础—判断和循环
2021-04-21 03:53:46
Django视图函数的具体使用
2023-07-25 11:02:54
Flask框架各种常见装饰器示例
2023-08-25 01:07:45
django上传图片并生成缩略图方法示例
2022-08-12 01:45:53
ASP利用TCPIP.DNS组件实现域名IP查询
2010-02-26 11:25:00
ASP内置对象Request和Response用法详解
2007-09-14 10:35:00
ASP+JavaScript的完整的日历使用
2008-10-11 12:16:00
在 Python 中利用Pool 进行多处理
2022-03-07 13:10:36
Centos7 安装 PHP7最新版的详细教程
2023-10-16 21:14:12
python 使用装饰器并记录log的示例代码
2022-02-17 02:15:03
windows上安装python3教程以及环境变量配置详解
2023-11-11 08:09:35
Python中的模块和包概念介绍
2023-06-06 09:13:53
python读取mat文件生成h5文件的实现
2022-08-06 08:43:28