我有两张相同的图片,但第二张图片是扭曲的并且尺寸不同。我希望能够在第一张图片上选择一个点,并在第二张图片上找到完全相同的点。 图片的同步将在每张图片上以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);
答案 0 :(得分:1)
感谢Alexander Reynolds的评论,我终于使用了OpenCvSharp 3库。 您可以使用以下方法获得单应性矩阵:
homographyMatrix = OpenCvSharp.Cv2.FindHomography(originalPicturePoints, targetPicturePoints);
,然后从原始图片中获取目标图片上的任何点:
targetPoint = OpenCvSharp.Cv2.PerspectiveTransform(orignalPoint, homographyMatrix);