Я столкнулся с трудностями при попытке получить результат, аналогичный this . После калибровки камеры я получил следующие параметры:
DIM=(800, 600)
K=np.array([[177.41548430658207, 0.0, 258.68599972062486], [0.0, 177.57591422482173, 205.71268583567885], [0.0, 0.0, 1.0]])
D=np.array([[-0.04397357230351177], [-0.03399404486757072], [0.03174104028771482], [-0.01131815456157867]])
Мое начальное изображение sh -eye выглядит следующим образом .
С следующий код:
def undistort(img_path):
img = cv2.imread(img_path)
nk = K.copy()
nk[0,0]=K[0,0]
nk[1,1]=K[1,1]
map1, map2 = cv2.fisheye.initUndistortRectifyMap(K, D, np.eye(3), nk, DIM, cv2.CV_16SC2)
undistorted_img = cv2.remap( img, map1, map2, interpolation=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT)
cv2.imshow("undistorted", undistorted_img)
cv2.imwrite('recoPersp_wrong.jpg', undistorted_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
реконструированное перспективное изображение выглядит следующим образом . Однако, изменив:
nk[0,0]=K[0,0]
nk[1,1]=K[1,1]
на
nk[0,0]=K[0,0]/2
nk[1,1]=K[1,1]/2
Я не получаю желаемого результата, как описано Hello Sam's answer . Вместо этого мое изображение размыто и размыто по краям , как это (это другое изображение, но проблема все еще та же) Не могли бы вы сказать мне, что я делаю неправильно?