我写了一个检测图像中正方形的应用程序。为了让您更好地了解这样一个包含这样一个正方形的图像(在这种情况下是一个标记)如何看起来像:
检测后,我得到的是我标记四个角的坐标。现在我不知道如何在我的标记上显示一个对象。物体应具有与标记相同的旋转/角度/方向。
是否有任何关于如何实现这一目标的论文,我可以使用哪些算法证明其非常可靠/有效?
它不需要是一个有效的解决方案,它可以是一个关于如何实现这个或类似的简单描述。如果你把我指向一个库或什么的,它应该在linux下工作,不需要windows但是如果我需要在某个时候移植应用程序的话会很好。 我已经查看了ARToolkit,但他们是相机参数文件和更复杂的矩阵,而我只有四个角点和一个图像而不是整个视频/相机流。
答案 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图像并正确缩放它。好吧,我不知道我是否帮助了你,也许这不是它的工作方式,但我希望我能写出一些有用的东西。