【发布时间】:2018-11-04 19:19:31
【问题描述】:
我有两张相同的图片,但第二张图片变形且尺寸不同。我希望能够在第一张图片上选择一个点并在第二张图片上找到完全相同的点。 图片的同步将在每张图片上进行4个点。
结果将是一个函数从第一张图片获取 X,Y 点并返回与第二张图片完全相同的点对应的 X',Y'。
我发现了 OpenCV 的 findHomography() 函数,它返回一个 Homography 矩阵,但在所有示例中,该矩阵用于使用 warpPerspective() 扭曲第二张图像,这不是我想要的。我只想要两张图片之间对应的坐标/像素。
关于如何在 C# 中做到这一点的任何提示? (是否使用 OpenCV)
编辑:
积分示例:
普通图片:[250, 25] , [250, 287] , [399, 287] , [400, 28]
目标图片:[0, 0] , [2098, 29538] , [19127, 28164] , [17097, -1200]
使用 OPEN CV 进行编辑:
OpenCvSharp.Mat hCv = OpenCvSharp.Cv2.FindHomography(srcPoints, dstPoints);
OpenCvSharp.Point2d[] resultCv = OpenCvSharp.Cv2.PerspectiveTransform(targetCv, hCv);
【问题讨论】:
-
两张图片上的四个角点都有吗?
-
是的,我有。
-
您可以为这些图片发布这些要点吗?
-
您将需要使用 OpenCV 函数
perspectiveTransform()。warpPerspective将扭曲图像,perspectiveTransform将扭曲一系列点并为您提供新位置。或者,您可以通过矩阵乘法轻松地自己计算,公式只是将齐次坐标相乘,然后进行缩放——公式显示在perspectiveTransform文档中。
标签: c# image opencv image-processing