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

3
我写了一个应用程序,可以检测图像中的正方形。为了让您更好地理解这样一个包含正方形(在本例中为标记)的图像可能会是什么样子:
https://istack.dev59.com/lA0Q4.webp 在检测后,我获得了标记的四个角落的坐标。现在我不知道如何在我的标记上显示一个对象。该对象应具有与标记相同的旋转/角度/方向。
是否有任何论文介绍如何实现这一点,或者有哪些算法可以使用,已经证明非常可靠/有效?
它不需要是一个工作解决方案,它可以是一个简单的描述,如何实现这一点或类似的东西。如果您指向一个库或其他内容,则应在Linux下工作,不需要Windows,但如果我需要在某个时候移植应用程序,那将是很棒的。
我已经看过ARToolkit,但它需要相机参数文件和更复杂的矩阵,而我只有四个角点和单个图像,而不是整个视频/摄像头流。

你的相机校准了吗?如果没有,你能做一下吗?如果你这样做的话,问题会变得更简单(只需要记录多张棋盘格图案的图像并运行可用的算法,例如来自opencv的算法)。 - etarion
2个回答

1

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


0

这是一个正方形。它应该位于具有法向量的平面中,我们需要找到它,因为这是放置对象的方式。我们可以假设所有的 y 坐标都为 0,现在我们正在处理方面问题。也许我们可以从将其映射到 0-1 范围内开始。最左边的点在 x 上得到 0,最右边的点得到 1,在 z 上也是如此 - 最近的点得到 0,最远的点得到 1。 我们可以通过检查对角线的长度来确定这一点。更短的连接前后点,下一个连接另外两个点。 所以我们得到了像这样的东西

       x z
left:  0 ?
right: 1 ?
front: ? 0
back:  ? 1

我认为这些?可以通过边的方面计算。使用正方形简化了问题。如果连接前右和前左的两条线相同,则左侧和右侧的z值为0.5。这样,您可以获得所有3个维度,并使用向量叉积计算法线。然后,您可以将具有y轴作为高度的模型,计算用于将0,1,0向量旋转为所得到的法线的矩阵,然后绘制位置2D图像并适当缩放。嗯,我不知道我是否帮助了您,也许这甚至不是它工作的方式,但我希望我写下的东西能够有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接