17cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# Calculates comparison output values for DistortionMapperTest.cpp:CompareToOpenCV 27cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# 37cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# Assumes a python that has numpy and cv2 (OpenCV) available 47cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 57cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvalaimport numpy as np 67cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvalaimport cv2 77cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 87cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaFx = 1000 97cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaFy = 1000 107cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaCx = 500 117cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaCy = 500 127cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# s = 0 - not supported by OpenCV 137cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 147cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaK = np.array([[Fx, 0, Cx],[0, Fy, Cy],[0, 0, 1]]) 157cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 167cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# Order is k1, k2, t1, t2, k3 177cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvaladist = np.array([0.1, -0.003, 0.02, 0.01, 0.004]) 187cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 197cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvalanp.random.seed(1234) 207cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 217cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaactiveArray = np.array([[1000, 750]]) 227cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 237cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalarawCoords = np.floor(np.random.rand(1000,2) * activeArray) 247cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 257cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# OpenCV needs either row count or col count = 1 for some reason 267cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalarawCoords2 = rawCoords.reshape(-1, 1, 2) 277cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 287cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala# P is the output camera matrix, K is the input; use the same for both 297cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville TalvalaexpCoords = cv2.undistortPoints(rawCoords2, K, dist, P = K) 307cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 317cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvalawith open('DistortionMapperTest_OpenCvData.h','w') as f: 327cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('// Generated by DistortionMapperComp.py\n'); 337cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('// for use by DistortionMapperTest.cpp\n\n'); 347cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 357cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('namespace openCvData {\n') 367cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('std::array<int32_t, %d> rawCoords = {\n' % (rawCoords.shape[0] * rawCoords.shape[1])) 377cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala for i in range(rawCoords.shape[0]): 387cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write(' %d, %d,\n' % (rawCoords[i][0], rawCoords[i][1])) 397cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('};\n') 407cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 417cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('std::array<int32_t, %d> expCoords = {\n' % (expCoords.shape[0] * expCoords.shape[2])) 427cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala for i in range(expCoords.shape[0]): 437cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write(' %d, %d,\n' % (expCoords[i][0][0], expCoords[i][0][1])) 447cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('};\n') 457cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala f.write('} // namespace openCvData\n') 467cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvala 477cffc831bcf26e6ef973e615e3002b78c344fcfbEino-Ville Talvalaprint "DistortionMapperTest_OpenCvData.h generated" 48