我正在使用OpenCV从一系列棋盘图像估计网络摄像头的内在矩阵 - 如本教程中所详述,并反向投影像素到方向(在方位角/仰角方面).
最终目标是让用户选择图像上的一个点,估计该点相对于网络摄像头中心的方向,并将其用作波束形成算法的DOA.
因此,一旦我估计了内在矩阵,我就反向投影用户选择的像素(参见下面的代码)并将其显示为方位角/仰角.
result = [0, 0, 0] # reverse projected point, in homogeneous coord.
while 1:
_, img = cap.read()
if flag: # If the user has clicked somewhere
result = np.dot(np.linalg.inv(mtx), [mouse_x, mouse_y, 1])
result = np.arctan(result) # convert to angle
flag = False
cv2.putText(img, '({},{})'.format(mouse_x, mouse_y), (20, 440), cv2.FONT_HERSHEY_SIMPLEX,
0.5, (0, 255, 0), 2, cv2.LINE_AA)
cv2.putText(img, '({:.2f},{:.2f})'.format(180/np.pi*result[0], 180/np.pi*result[1]), (20, 460),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2, cv2.LINE_AA)
cv2.imshow('image', img)
if cv2.waitKey(1) & …Run Code Online (Sandbox Code Playgroud)