Python 如何对压缩图像使用cv2.findHomography()
我正在使用opencv的python绑定。我使用关键点检测和描述(即SURF、SIFT等)查找目标图像中包含的模板图像,但有一个缺点:模板可以在目标图像中“压缩”,因此纵横比与目标图像不同 这不适用于findHomography(),因为它假定一个简单的透视变换,而透视变换不能进行这种拉伸 有没有办法做到这一点?我曾考虑过以不同的量递增拉伸目标图像以改变纵横比,并在每次迭代中使用findHomography,但据我所知,无法比较拟合的质量(因为我使用RANSAC来找到最佳拟合),因此我无法判断它最适合哪种挤压级别 也许通过查看返回的掩码的长度来计算与RANSAC正确匹配的点数?这看起来有点恶心 这不适用于findHomography(),因为它假定一个简单的透视变换,而透视变换不能进行这种拉伸 事实并非如此;即使是仿射扭曲也包括剪切变形,同音字通过非均匀变形来扩展这种变形。例如,由矩阵给出的仿射变换Python 如何对压缩图像使用cv2.findHomography(),python,opencv,stretch,homography,Python,Opencv,Stretch,Homography,我正在使用opencv的python绑定。我使用关键点检测和描述(即SURF、SIFT等)查找目标图像中包含的模板图像,但有一个缺点:模板可以在目标图像中“压缩”,因此纵横比与目标图像不同 这不适用于findHomography(),因为它假定一个简单的透视变换,而透视变换不能进行这种拉伸 有没有办法做到这一点?我曾考虑过以不同的量递增拉伸目标图像以改变纵横比,并在每次迭代中使用findHomography,但据我所知,无法比较拟合的质量(因为我使用RANSAC来找到最佳拟合),因此我无法判断它
2 0 0
0 1 0
将图像水平拉伸两倍,如本短程序所示:
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)
产生产出:
所以这不是你的问题。同音字允许更强烈的扭曲。您是自己运行
RANSAC
还是让findHomography()
函数通过RANSAC
决定您的分数?请发布您的预期输出和当前代码,可能是一个反映您所面临问题的新问题。谢谢,您完全正确。我的代码工作正常,当我认为我的图像被拉伸时,我错了,它们实际上只是在侧面填充了一些额外的东西。我误解了维基百科关于单应性的文章,它说单应性与“同一平面上的任何两个图像”有关,我认为这意味着在一个平面上有相同的图像。我没有意识到它也可以对仿射变换进行编码。谢谢