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



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

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

我仍在研究相机几何结构和openCV,如果有任何帮助,我将不胜感激,谢谢。

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

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

例如,对于焦=500像素FOV=2*atan(640/2500)=1.14rad=65.2deg

需要记住的一点是,焦距随屏幕分辨率成比例变化。例如,如果根据640x320图像计算出焦距=500,则对于320x160图像,焦距=250。

最新更新