import cv2 import numpy as np import struct import time import sys log_file = sys.argv[1] if len(sys.argv) > 1 else 'lepton_log.bin' output_folder = 'videos' fourcc = cv2.VideoWriter_fourcc(*'XVID') leptonVideoWriter = cv2.VideoWriter(output_folder+'/lepton.avi', fourcc, 10.0, (160, 120), False) gridEyeVideoWriter = cv2.VideoWriter(output_folder+'/gridEye.avi', fourcc, 10.0, (320, 320), False) #cv2.resizeWindow('image', 320, 320) with open(log_file, 'rb') as f: while 1: leptonData = f.read(38400) if len(leptonData) != 38400: break leptonImg = np.array(struct.unpack("<19200H", leptonData), dtype=np.uint16).reshape((120, 160)) b = leptonImg.copy() for x in range(160): for y in range(120): b[y][x] = ((leptonImg[y][x]&0xff)<<8) + (leptonImg[y][x]>>8) b = cv2.normalize(b, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX) b = b.astype(np.uint8) cv2.imshow("image", cv2.resize(b, (427, 320))) leptonVideoWriter.write(b) gridEyeData = f.read(4*64) gridEyeImg = np.frombuffer(gridEyeData, dtype=np.uint8).reshape((32, 8)) reshapeImg = np.zeros((16,16), dtype=np.uint8) reshapeImg[0:8, 0:8] = gridEyeImg[0:8] reshapeImg[0:8, 8:16] = gridEyeImg[8:16] reshapeImg[8:16, 0:8] = gridEyeImg[16:24] reshapeImg[8:16, 8:16] = gridEyeImg[24:32] reshapeImg = cv2.normalize(reshapeImg, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX) cv2.imshow("gridEyeImg", cv2.resize(reshapeImg, (320, 320))) gridEyeVideoWriter.write(cv2.resize(reshapeImg, (320, 320))) key = cv2.waitKey(10) if key == ord('q'): break leptonVideoWriter.release() gridEyeVideoWriter.release() cv2.waitKey(0) cv2.destroyAllWindows()