通过摄像机标定得到了摄像机的内禀矩阵和畸变参数。焦距的单位是像素,我猜。那么,我如何计算视野(沿着y)?这个公式对吗?
double fov_y = 2*atan(height/2/fy)*180/CV_PI;
我将使用它来参数
gluPerspective()
jyztefdp1#
OpenCV有一个函数可以做到这一点。看看实现(在GitHub上提供),我们已经给出了一个尺寸为w x h的图像和一个相机矩阵:
用于视场的等式是:
o75abkj42#
继续@mallwright的回答,下面是一段Python/numpy代码,用于根据图像分辨率和焦距(以像素为单位)计算视野:
import numpy as np # Prepare w, h = 1280, 720 fx, fy = 1027.3, 1026.9 # Go fov_x = np.rad2deg(2 * np.arctan2(w, 2 * fx)) fov_y = np.rad2deg(2 * np.arctan2(h, 2 * fy)) print("Field of View (degrees):") print(f" {fov_x = :.1f}\N{DEGREE SIGN}") print(f" {fov_y = :.1f}\N{DEGREE SIGN}")
输出量:
Field of View (degrees): fov_x = 63.8° fov_y = 38.6°
请注意,这是假设主点位于图像的中心,并且没有失真,请参阅this answer。
2条答案
按热度按时间jyztefdp1#
OpenCV有一个函数可以做到这一点。看看实现(在GitHub上提供),我们已经给出了一个尺寸为w x h的图像和一个相机矩阵:
用于视场的等式是:
o75abkj42#
继续@mallwright的回答,下面是一段Python/numpy代码,用于根据图像分辨率和焦距(以像素为单位)计算视野:
输出量:
请注意,这是假设主点位于图像的中心,并且没有失真,请参阅this answer。