物体相对于相机和视频的角度?视频和相机输出不同

Angle of object relative to the camera and video? Video and camera output different

我想知道我是否有关于此的想法,我已经对我的相机进行了校准,现在我只想获得检测到的物体相对于相机在水平 x 轴上的角度。 我想我可以在已知像素值的图像上放置一些网格线,并将它们与已知的真实世界距离相匹配,并以这种方式计算每个像素的角度,知道三角形的距离。从图像中心 0 度开始,当我们向右移动 +X 度并向左移动 -X 像素。

假设这是一个正确的方法,出于某种原因,我正在处理的视频是以 704x576 像素录制的,但是当我将相机插入我的计算机以处理它时,它是 640x480 像素并且它是制作录音的同一台相机。我认为这会在一定程度上影响我的结果,包括校准和我想要的每像素角度测量。我在 C++ 中使用 OpenCV,我想知道当我将相机调到 704x576 时是否有 way/function 来调整屏幕尺寸,如果我在这个尺寸下进行测量,我能得到一个稍微准确的角度每像素测量?或者我需要做其他事情吗?

我仍在寻找相机几何和 openCV 的方法,非常感谢任何帮助,谢谢。

这可能比您想象的要容易。假设您的相机具有 60.0 度水平视野 (FOV)。比沿 X 轴的每个像素仅为 60.0/640 度。您可以通过考虑一个直角三角形来轻松计算 FOV,该直角三角形的边由焦距矢量和屏幕宽度的一半组成:

FOV = 2*atan(640/2, focal) 其中焦距以像素为单位

例如,focal=500 像素 FOV = 2*atan(640/2, 500) = 1.14rad = 65.2deg

要记住的一件事是焦距随屏幕分辨率按比例变化。例如,如果您根据 640x320 图像计算 focal=500,则对于 320x160 图像 focal=250.