计算正方形的方向并显示具有相同方向的对象

时间:2011-01-05 14:15:03

标签: c++ opengl opencv augmented-reality photogrammetry

我写了一个检测图像中正方形的应用程序。为了让您更好地了解这样一个包含这样一个正方形的图像(在这种情况下是一个标记)如何看起来像:

检测后,我得到的是我标记四个角的坐标。现在我不知道如何在我的标记上显示一个对象。物体应具有与标记相同的旋转/角度/方向。

是否有任何关于如何实现这一目标的论文,我可以使用哪些算法证明其非常可靠/有效?

它不需要是一个有效的解决方案,它可以是一个关于如何实现这个或类似的简单描述。如果你把我指向一个库或什么的,它应该在linux下工作,不需要windows但是如果我需要在某个时候移植应用程序的话会很好。 我已经查看了ARToolkit,但他们是相机参数文件和更复杂的矩阵,而我只有四个角点和一个图像而不是整个视频/相机流。

3 个答案:

答案 0 :(得分:1)

我相信你可以使用OpenCV的cvGetPerspectiveTransform找到可以将正方形扭曲到标记角的变换,然后cvWarpPerspective来扭曲图像。

答案 1 :(得分:0)

我认为这个帖子中的一些答案可以指出你正确的方向: How do I reverse-project 2D points into 3D?

答案 2 :(得分:0)

这是一个正方形。它应该在一个正常的平面上碱液,我们需要找到它,因为它是我们放置物体的方式。我们可以假设所有y cooridnates都是0,现在我们正在处理方面问题。也许我们可以从将其映射到0-1范围开始。大多数左点在x上得到0,大多数在右边1,同样在z上得到 - 最接近的得到0和最远的1。 我们可以通过检查对角线的长度来确定这一点。较短的一个连接前后点,另一个连接另一个2。 所以我们得到像

这样的东西
       x z
left:  0 ?
right: 1 ?
front: ? 0
back:  ? 1

我认为这些?可以通过方面来计算。使用square可以简化问题。如果连接前右和左前的两条线相同,则左右的z值为0.5。好吧,通过这种方式,您可以获得所有3个维度并使用向量交叉产品计算正常。然后你可以把你的模型以y轴作为高度,计算矩阵用于将0,1,0矢量旋转到你得到的法线,然后绘制位置2D图像并正确缩放它。好吧,我不知道我是否帮助了你,也许这不是它的工作方式,但我希望我能写出一些有用的东西。