I know little about camera calibration. But, seeing your code and error, I changed it as follows:
import cv2 import numpy as np camera_matrix = np.array([[1.3e+03, 0., 6.0e+02], [0., 1.3e+03, 4.8e+02], [0., 0., 1.]], dtype=np.float32) dist_coeffs = np.array([-2.4-01, 9.5e-02, -4.0e-04, 8.9e-05, 0.], dtype=np.float32) test = np.zeros((10,1,2), dtype=np.float32) xy_undistorted = cv2.undistortPoints(test, camera_matrix, dist_coeffs) print xy_undistorted
Below is the result obtained, check if it is correct:
[[[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]] [[ 0.0187303 0.01477836]]]
What is the problem:
The error says that the source should have EITHER one row OR one column
. And it should be CV_32FC2 or CV_64FC2, means two channels and floating point. So make your src form (10,1,2) or (1,10,2)
. Both methods work and give the same result (I checked it myself). The only problem is that I do not know if this is correct, so see for yourself.