My results were as follows:
Results of camera calibration, as per the opencv tutorial:
'imgpoints' appending corrected to use sub-pixel corner values
(`corners2`) instead of the tutorial typo which just uses `corners`.
Calibration performed on Blue Robotics' Low Light Camera, in air.
Camera was inside electronics enclosure, so was affected by dome
distortion, but the intrinsic parameters and distortion coefficients
of this setup cannot be assumed to hold true for any other camera or
setup - calibration is individual device and setup specific.
import numpy as np
# [ f_x, 0 , c_x]
# [ 0 , f_y, c_y]
# [ 0 , 0 , 1 ]
camera_intrinsics_matrix = np.array(
[[1.032815861728502114e+03, 0.000000000000000000e+00, 9.684981097972511179e+02],
[0.000000000000000000e+00, 1.033852887510551909e+03, 5.303797546077584002e+02],
[0.000000000000000000e+00, 0.000000000000000000e+00, 1.000000000000000000e+00]]
# [k_1, k_2, p_1, p_2, k_3]
camera_distortion_coefficients = np.array(
[[1.818389051822951602e-02, -1.445940107627855138e-02, -3.952855470630491520e-04,
# mean reprojection error for the images I calibrated with was
mean_error = 0.04207598111470049 # px