Pav*_*ane 5 c++ opencv projection homography perspective
我使用findHomography函数获得H矩阵。
H = findHomography(points_src, points_dst);
Run Code Online (Sandbox Code Playgroud)
然后,将H与warpPerspective一起使用以获取图像的透视投影
warpPerspective(im_src, im_dst, H, Size(100, 100));
Run Code Online (Sandbox Code Playgroud)
从这里我得到了一些兴趣点
vector<Point2f> points = some_function(im_dst)
Run Code Online (Sandbox Code Playgroud)
现在,我只想让“点”集返回到原始图像,这样,我现在就可以将原始图像中的关注点集还原。
对于此任务,我猜想我需要再次使用warpPerspective和标志WARP_INVERSE_MAP,但这不起作用。
Del*_*gan 17
您确实可以findHomography()再次使用,但由于这种矩阵的组合属性,反转变换的一种更优雅、准确和快速的方法是简单地反转单应矩阵。
这是一个使用 Python 的小演示:
import cv2
import numpy as np
source = np.float32([[0, 0], [100, 0], [100, 100], [0, 100]])
dest = np.float32([[0, 0], [-1000, 0], [-1000, -1000], [0, -1000]])
points = np.float32([[[50, 50]]])
homography, _ = cv2.findHomography(source, dest)
transformed = cv2.perspectiveTransform(points, homography)
print(transformed)
# => [[[-500. -500.]]]
homography_inverse = np.linalg.inv(homography)
detransformed = cv2.perspectiveTransform(transformed, homography_inverse)
print(detransformed)
# => [[[50. 50.]]]
Run Code Online (Sandbox Code Playgroud)
要找到逆单应性,只需切换points_dst和points_src:
H_inv= findHomography(points_dst, points_src);
Run Code Online (Sandbox Code Playgroud)
然后,如果将 应用H_inv到由 转换的点H,您将获得原始点。
| 归档时间: |
|
| 查看次数: |
2035 次 |
| 最近记录: |