有谁能解释一下,如果有可能,如何使用cv2.getPerspectiveTransform()。
我有关于我的图像的3d信息:我知道a,b的长度,以及c,d,e,f和g的不同的高度。我让高度不同来获得更多的3d信息,但是如果不需要,那就更好了。
最终,我需要知道粉红点在矩形中的位置,在实现了对我的x,y位置的转换后,我从相机馈送得到。

发布于 2013-09-28 18:16:20
如果用C,D,E,F表示原始图像中黑色多边形四个角的位置(每个角是一个2D点),而C',D',E',F‘则是目标图像中相应点的位置(可能是(0,0),(a,0),(a,b),(0,b),M=cv2. cv2.getPerspectiveTransform({C,D,E,F},{C',D',E',F'})是从一个多边形到另一个多边形的透视变换。
给定的位置G,即g在原始图像中的黑色多边形上的垂直投影,您可以将其在目标图像中的位置计算为cv2.transform(G,M)。这将返回一个点(x,y,z),其中最后一个坐标z是一个规范化项。当你的点在目标图像中是“无穷大”时,这个z是零。如果z不是零,你要寻找的点是(x/z,y/z)。
如果z是零,你的点在无穷远处,在向量(x,y)的支持方向上(考虑一下G在源图像中黑色多边形的两个相对边的支持线的交点上)。
如果你知道c,d,e,f,G的高度相等,这些点也是共面的,并且完全相同的方法适用于c,d,e,f,g,而不是C,D,E,F,G。
https://stackoverflow.com/questions/19067908
复制相似问题