我找遍了这个问题的答案,但我找不到答案,所以我在这里问。
问题:
我有一个激光投射在一个表面上,从头顶,我想投射一些特定的大小形状在这个表面。为了做到这一点,我需要‘校准’的激光,以地面在现实世界。
激光在它自己的坐标系中投影,在x和y方向范围从-32000到32000。我有一个粗糙的矩形在我的表面设置目标(更多细节见下图)。目标是以毫米为单位建立的,是它们自己的坐标系。
我需要能够取点毫米,并使他们在这个范围内-32000到32000准确地在一系列的场景中。
示例:

,确定所需点的激光空间坐标最精确的方法是什么?
问题2:
投影空间不一定是平坦的。它可以向任何方向倾斜。例如,如果提高底部(相对于示例图片),实际世界坐标在二维中保持不变,但测量到的激光坐标更像是梯形。见下图

如果有人遇到/解决了类似的问题,或者甚至可以开始指出解决方案的正确方向,我们将不胜感激。
谢谢!
发布于 2018-10-02 09:03:12
我在这里的帖子上也有同样的问题:https://stackoverflow.com/a/52480400/9130280
举个例子,我问我的图片问题,因为它更容易解释,但我应用解决方案的设备定位在一个表面。这与你想要做的事情很接近。
基本上,您必须使用OpenCvSharp 3库(来自nuget)。
首先,你必须得到一个同调矩阵。你唯一需要知道的坐标是边缘。因此,用边填充两个数组,然后使用:
homographyMatrix = OpenCvSharp.Cv2.FindHomography(originalPointsList, targetPointsList);
然后在激光坐标下得到“毫米”中的任何一点。
targetPoint = OpenCvSharp.Cv2.PerspectiveTransform(orignalPoint, homographyMatrix);
如果你需要更多细节,请告诉我。
https://stackoverflow.com/questions/52510536
复制相似问题