parent
							
								
									cead4c6e85
								
							
						
					
					
						commit
						2ed92dfdbe
					
				
				 1 changed files with 47 additions and 0 deletions
			
			
		| @ -0,0 +1,47 @@ | ||||
| #!/usr/bin/env python3 | ||||
| 
 | ||||
| # Question: Can a human drive from this data? | ||||
| 
 | ||||
| import cv2 | ||||
| import numpy as np | ||||
| import cereal.messaging as messaging | ||||
| from common.window import Window | ||||
| from common.transformations.model import MEDMODEL_INPUT_SIZE | ||||
| from common.transformations.camera import FULL_FRAME_SIZE, eon_intrinsics | ||||
| 
 | ||||
| from common.transformations.model import get_camera_frame_from_medmodel_frame | ||||
| from tools.replay.lib.ui_helpers import CalibrationTransformsForWarpMatrix | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|   sm = messaging.SubMaster(['liveCalibration']) | ||||
|   frame = messaging.sub_sock('frame', conflate=True) | ||||
|   win = Window(MEDMODEL_INPUT_SIZE[0], MEDMODEL_INPUT_SIZE[1], double=True) | ||||
|   calibration = None | ||||
| 
 | ||||
|   while 1: | ||||
|     fpkt = messaging.recv_one(frame) | ||||
|     if len(fpkt.frame.image) == 0: | ||||
|       continue | ||||
|     sm.update(timeout=1) | ||||
|     rgb_img_raw = fpkt.frame.image | ||||
|     imgff = np.frombuffer(rgb_img_raw, dtype=np.uint8).reshape((FULL_FRAME_SIZE[1], FULL_FRAME_SIZE[0], 3)) | ||||
|     imgff = imgff[:, :, ::-1] # Convert BGR to RGB | ||||
| 
 | ||||
|     if sm.updated['liveCalibration']: | ||||
|       intrinsic_matrix = eon_intrinsics | ||||
|       img_transform = np.array(fpkt.frame.transform).reshape(3,3) | ||||
|       extrinsic_matrix = np.asarray(sm['liveCalibration'].extrinsicMatrix).reshape(3, 4) | ||||
|       ke = intrinsic_matrix.dot(extrinsic_matrix) | ||||
|       warp_matrix = get_camera_frame_from_medmodel_frame(ke) | ||||
|       calibration = CalibrationTransformsForWarpMatrix(warp_matrix, intrinsic_matrix, extrinsic_matrix) | ||||
|       transform = np.dot(img_transform, calibration.model_to_full_frame) | ||||
| 
 | ||||
| 
 | ||||
|     if calibration is not None: | ||||
|       imgw = cv2.warpAffine(imgff, transform[:2], | ||||
|         (MEDMODEL_INPUT_SIZE[0], MEDMODEL_INPUT_SIZE[1]), | ||||
|         flags=cv2.WARP_INVERSE_MAP | cv2.INTER_CUBIC) | ||||
| 
 | ||||
|       win.draw(imgw) | ||||
| 
 | ||||
| 
 | ||||
					Loading…
					
					
				
		Reference in new issue