我现在没有特定的摄像头,我很好奇它是如何以编程方式/数学方式完成的。
我有一个3D空间,一个矩形,一个摄像头朝上,向内看向内。
我在那个矩形中有一个移动的对象,该对象正在传输其当前位置的(x,y,z)坐标。
我想获取这些坐标并将其转换为指示相机指向该位置的指令。
此翻译通常如何完成?
我现在没有特定的摄像头,我很好奇它是如何以编程方式/数学方式完成的。
我有一个3D空间,一个矩形,一个摄像头朝上,向内看向内。
我在那个矩形中有一个移动的对象,该对象正在传输其当前位置的(x,y,z)坐标。
我想获取这些坐标并将其转换为指示相机指向该位置的指令。
此翻译通常如何完成?
Answers:
我的相机是DLink 5020-L,并具有可以通过API给出的水平/倾斜命令。它还具有可设置的预定义位置,也可以通过API触发
Position 1
Position 1
您可能会否定先前的结果,具体取决于相机的放置方式
(我将在有空的时候添加一些原理图)
已经有了不错的答案,我只想补充一些您应该考虑的其他事项。就像hardlib和Goufalite已经提到的那样,做到这一点的方法是三角的。我绘制了摄像机和IoT对象的二维图:
如您所见,当物体移远时,相机的视野将大于该物体-如果不在近距离内。
现在,您可能希望照相机始终位于对象的中心。在这种情况下,您可以简单地进行hardlib引用的计算:
ϴ = arctan(y/x)
...根据惯例,它是与x轴逆时针的角度。您还需要远离水平面的角度:
α = arctan(z / ((y^2+x^2)^1/2))
显然,您必须基于所有三个轴的原点来计算摄像机位置。
另一方面,您可能更希望不要使摄像机移动超过必要的程度,也就是说,仅当对象似乎要移出框架时才使摄像机移动。在这种情况下,您可能需要一个“压力”变量,该变量将使摄像机更有可能根据对象与框架边缘的接近程度来更改其角度。
如果沿着该路线行驶,则需要在两个视场中都知道相机视场的角度,以便可以确定将对象与相机视场进行比较的位置。