555
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.8 KiB

  1. import cv2
  2. import numpy as np
  3. import struct
  4. import time
  5. import sys
  6. log_file = sys.argv[1] if len(sys.argv) > 1 else 'lepton_log.bin'
  7. output_folder = 'videos'
  8. fourcc = cv2.VideoWriter_fourcc(*'XVID')
  9. leptonVideoWriter = cv2.VideoWriter(output_folder+'/lepton.avi', fourcc, 10.0, (160, 120), False)
  10. gridEyeVideoWriter = cv2.VideoWriter(output_folder+'/gridEye.avi', fourcc, 10.0, (320, 320), False)
  11. #cv2.resizeWindow('image', 320, 320)
  12. with open(log_file, 'rb') as f:
  13. while 1:
  14. leptonData = f.read(38400)
  15. if len(leptonData) != 38400:
  16. break
  17. leptonImg = np.array(struct.unpack("<19200H", leptonData), dtype=np.uint16).reshape((120, 160))
  18. b = leptonImg.copy()
  19. for x in range(160):
  20. for y in range(120):
  21. b[y][x] = ((leptonImg[y][x]&0xff)<<8) + (leptonImg[y][x]>>8)
  22. b = cv2.normalize(b, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX)
  23. b = b.astype(np.uint8)
  24. cv2.imshow("image", cv2.resize(b, (427, 320)))
  25. leptonVideoWriter.write(b)
  26. gridEyeData = f.read(4*64)
  27. gridEyeImg = np.frombuffer(gridEyeData, dtype=np.uint8).reshape((32, 8))
  28. reshapeImg = np.zeros((16,16), dtype=np.uint8)
  29. reshapeImg[0:8, 0:8] = gridEyeImg[0:8]
  30. reshapeImg[0:8, 8:16] = gridEyeImg[8:16]
  31. reshapeImg[8:16, 0:8] = gridEyeImg[16:24]
  32. reshapeImg[8:16, 8:16] = gridEyeImg[24:32]
  33. reshapeImg = cv2.normalize(reshapeImg, dst=None, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX)
  34. cv2.imshow("gridEyeImg", cv2.resize(reshapeImg, (320, 320)))
  35. gridEyeVideoWriter.write(cv2.resize(reshapeImg, (320, 320)))
  36. key = cv2.waitKey(10)
  37. if key == ord('q'):
  38. break
  39. leptonVideoWriter.release()
  40. gridEyeVideoWriter.release()
  41. cv2.waitKey(0)
  42. cv2.destroyAllWindows()