我想知道我是否有想法写这个,我已经为我的相机做了校准,现在我想在x轴(水平方向)上获得相对于相机的检测物体的角度。 我想我可以在已知像素值的图像上放置一些网格线,并匹配具有已知真实世界距离的网格线,并计算每个像素的角度,知道三角形的距离。从图像的中心开始0度,当我们向右+ X度和向左-X像素移动时。
假设这是一个正确的方法,由于某种原因,我正在使用的视频以704x576像素录制,但是当我将相机插入我的计算机以使用它的640x480像素并且它是相同的相机制作录音的。我认为这会影响我的结果,校准和我想要的每像素测量角度。我正在使用C ++中的OpenCV,我想知道是否有一种方法/功能可以调整屏幕大小,当我将相机调到704x576时,如果我然后按照这个尺寸进行测量,我可以获得每像素一些精确的角度测量?或者我还需要做其他事情吗?
我仍在围绕相机几何和openCV进行思考,任何帮助都会非常感激,谢谢。
答案 0 :(得分:0)
这可能比你想象的要容易。假设您的相机具有60.0度的水平视野(FOV)。比沿X轴的每个像素仅为60.0 / 640度。您可以通过考虑由焦距矢量和屏幕宽度的一半形成的边的直角三角形来轻松计算FOV:
FOV = 2 * atan(640/2,焦距),其中焦距以像素为单位
例如,焦点= 500像素 FOV = 2 * atan(640 / 2,500)= 1.14rad = 65.2deg
要记住的一点是焦距与屏幕分辨率成比例变化。例如,如果您基于640x320图像计算焦点= 500,则对于320x160图像焦点= 250。