import cv2
import numpy as np
// Use the 3x3 M projection matrix from the intrinsic calibration
M = np.array([...]);
// Use D distortion from the intrinsic calibration (5 or 8 parameters in the standard OpenCV ordering)
D = np.array([...]);
// Use the 3x3 R rotation matrix from the extrinsic calibration
R = np.array([...]);
// Use the 3x4 P camera projection matrix from the extrinsic calibration
P = np.array([...]);
// Width of the output rectified image
width = ...;
// Height of the output rectified image
height = ...;
unrectified_image = cv2.imread('unrectified_image.png')
map_x, map_y = cv2.initUndistortRectifyMap(M, D, R, P, (width, height))
# Apply the transformation to the image
rectified_image = cv2.remap(unrectified_image, map_x, map_y, cv2.INTER_LINEAR)
cv2.imwrite('rectified.png', rectified_image)