python-3.x - 基于3点的图像变换
问题描述
我想根据两个重叠图像上识别的 3 个点来转换(平移、旋转和缩放)图像。基于 3 个点的像素坐标,我想创建一个合并两者的大 tiff。对于下一次重叠,我想做同样的事情等,直到我得到一个结合所有图片的大 tiff。这有点像地理配准,但没有使用坐标。问题是我没有经验 matplotlib。到目前为止,我已经创建了一个脚本,它并排显示每对重叠的图像,当我关闭窗口时,下一对会打开等等。我还设法从这些图像上的点击点获取像素坐标。但现在我必须根据 3 点开始转换,我只是不知道从哪里开始。对可用功能等有任何帮助吗?
编辑:图像是低分辨率热图像,所以我认为自动转换不会起作用
解决方案
您可以使用wand
哪个 Python 绑定到ImageMagick。所以,从这张图片开始:
我们可以将红色顶点 (138,80) 扭曲到左上角,绿色 (43,22) 扭曲到左下角,蓝色 (49,125) 扭曲到右下角,如下所示(图像为 152x152):
#!/usr/bin/env python3
from wand.image import Image
# Open image and distort, giving start x,y and end x,y for 3 points
with Image(filename='start.png') as img:
points = (138, 80, 0, 0, # Red vertex
43, 22, 0,152, # Green vertex
49,125, 152,152) # Blue vertex
img.distort('affine',points)
# Save result
img.save(filename='result.png')
您也可以从命令行在终端中执行相同的操作:
magick start.png -distort affine "138,80 0,0 43,22 0,152 49,125 152,152" result.png
关键词:图像处理、Python、扭曲、变形、仿射变换、变换、缩放、旋转、ImageMagick。
推荐阅读
- python - 创建/循环通过不同的文件夹和保存文件
- flutter - 在颤振中使用 textFormField
- php - 在 MySQL 中查询单个列中的多个值
- flutter - 如何根据天气条件显示图标。我做了大部分代码,在结束部分需要帮助
- c# - 在 C# 中的选定文本位置之前和之后插入 HTML TAG
- dependency-injection - NestJS 在守卫中注入服务
- arrays - 如何摆脱这个简单的 SwiftUI 错误?
- assembly - 我无法将我的登录密码与我的注册密码进行比较。谁能给我一个解决方案来解决它?
- python - 如何在 TENANT_MODEL 中使用多模型
- php - php artisan make:auth 未在 Laravel 8 中定义