gpt4 book ai didi

python - 如何将 cv2.findHomography() 与压缩图像一起使用

转载 作者:行者123 更新时间:2023-12-02 17:41:20 25 4
gpt4 key购买 nike

我正在为 opencv 使用 python 绑定(bind)。我正在使用关键点检测和描述(即 SURF、SIFT、...)来查找包含在目标图像中的模板图像,但是有一个问题:模板可以在目标图像中“挤压”,从而使方面比例与目标图像不同。

这不适用于 findHomography(),因为它假设一个简单的透视变换,它不能进行这种拉伸(stretch)。

有没有办法做到这一点?我曾考虑过以不同的方式增量拉伸(stretch)目标图像以改变纵横比,并在每次迭代时使用 findHomography,但据我所知,没有办法比较拟合的质量(因为我使用的是 RANSAC找到最合适的),所以我不知道它最适合哪个挤压水平。

也许通过查看返回掩码的长度来计算 RANSAC 中正确匹配的点数?这似乎有点恶心。

最佳答案

This does not work with findHomography(), since it assumes a simple perspective transform, which cannot have this sort of stretching.



这不是真的;即使是仿射扭曲也包括 stretching the aspect ratios甚至剪切变形,单应性甚至通过非均匀变形来扩展它。例如矩阵给出的仿射变换
2 0 0
0 1 0

将图像水平拉伸(stretch)两倍,如这个简短的程序所示:
import cv2
import numpy as np

img = cv2.imread('lena.png')
affine_warp = np.array([[2, 0, 0], [0, 1, 0]], dtype=np.float32)
dsize = (img.shape[1]*2, img.shape[0])
warped_img = cv2.warpAffine(img, affine_warp, dsize)

cv2.imshow("2x Horizontal Stretching", warped_img)
cv2.waitKey(0)

产生输出: Lena stretched 2x wide

所以这不是你的问题。同应性允许更强的翘曲。你在运行吗 RANSAC自己或让 findHomography()功能通过 RANSAC 决定您的积分?请发布您的预期输出和您当前的代码,可能在一个反射(reflect)您所面临问题的新问题中。

关于python - 如何将 cv2.findHomography() 与压缩图像一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44401484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com