| @ -0,0 +1,71 @@ | |||
| import zmq | |||
| import cv2 | |||
| import numpy as np | |||
| import struct | |||
| import time | |||
| context = zmq.Context() | |||
| context2 = zmq.Context() | |||
| # Socket to talk to server | |||
| print("Connecting to hello world server…") | |||
| socket = context.socket(zmq.REQ) | |||
| socket.connect("tcp://192.168.0.12:5555") | |||
| socket2 = context2.socket(zmq.REQ) | |||
| socket2.connect("tcp://192.168.0.12:5556") | |||
| recordFrames = 0 | |||
| startTime = 0 | |||
| def draw_circle(event, x, y, flags, param): | |||
| global recordFrames | |||
| if event == cv2.EVENT_LBUTTONDOWN: | |||
| print(img[y][x]>>8, img[y][x]&0xff) | |||
| print(b[y][x]>>8, b[y][x]&0xff) | |||
| recordFrames = 300 | |||
| startTime = time.time() | |||
| with open("lepton_log.bin", "wb") as f: | |||
| pass | |||
| cv2.namedWindow('image') | |||
| cv2.setMouseCallback('image', draw_circle) | |||
| while 1: | |||
| socket.send(b"Hello") | |||
| # Get the reply. | |||
| message = socket.recv() | |||
| socket2.send(b"Hello") | |||
| gridEyeData = socket2.recv() | |||
| if recordFrames > 0: | |||
| print ("left frames", recordFrames) | |||
| with open("lepton_log.bin", "ab") as f: | |||
| f.write(message) | |||
| f.write(gridEyeData) | |||
| recordFrames -= 1 | |||
| sleepTime = 0.1 - (time.time() - startTime) | |||
| if sleepTime > 0: | |||
| time.sleep(sleepTime) # wait 0.1 second | |||
| startTime = time.time() | |||
| continue | |||
| img = np.array(struct.unpack("<19200H", message), dtype=np.uint16).reshape((120, 160)) | |||
| # img = np.ndarray(shape=(19200,),dtype='<u2', buffer=message).reshape((120, 160)) | |||
| #img = np.frombuffer(message, dtype=np.uint16).reshape((120, 160)) | |||
| b = img.copy() | |||
| for x in range(160): | |||
| for y in range(120): | |||
| b[y][x] = ((img[y][x]&0xff)<<8) + (img[y][x]>>8) | |||
| b = cv2.normalize(b, dst=None, alpha=0, beta=65535, norm_type=cv2.NORM_MINMAX) | |||
| #img = img.astype(np.uint8) | |||
| #image = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) | |||
| #cvuint8 = cv2.convertScaleAbs(image) | |||
| cv2.imshow("image", b) | |||
| # cv2.imshow("image_o", img) | |||
| gridEyeImg = np.frombuffer(gridEyeData, dtype=np.uint8).reshape((32, 8)) | |||
| cv2.imshow("gridEyeImg", cv2.resize(gridEyeImg, (160, 640))) | |||
| key = cv2.waitKey(100) | |||
| if key == ord('q'): | |||
| break | |||
| cv2.destroyAllWindows() | |||
| @ -0,0 +1,25 @@ | |||
| import zmq | |||
| import cv2 | |||
| import numpy as np | |||
| import struct | |||
| context = zmq.Context() | |||
| # Socket to talk to server | |||
| print("Connecting to hello world server…") | |||
| socket = context.socket(zmq.REQ) | |||
| socket.connect("tcp://192.168.0.12:5556") | |||
| cv2.namedWindow('image') | |||
| while 1: | |||
| socket.send(b"Hello") | |||
| # Get the reply. | |||
| message = socket.recv() | |||
| img = np.frombuffer(message, dtype=np.uint8).reshape((32, 8)) | |||
| cv2.imshow("image", cv2.resize(img, (160, 640))) | |||
| key = cv2.waitKey(100) | |||
| if key == ord('q'): | |||
| break | |||
| cv2.destroyAllWindows() | |||
| @ -0,0 +1,46 @@ | |||
| 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() | |||
| @ -0,0 +1,71 @@ | |||
| import zmq | |||
| import cv2 | |||
| import numpy as np | |||
| import struct | |||
| import time | |||
| context = zmq.Context() | |||
| context2 = zmq.Context() | |||
| # Socket to talk to server | |||
| print("Connecting to hello world server…") | |||
| socket = context.socket(zmq.REQ) | |||
| socket.connect("tcp://192.168.0.12:5555") | |||
| socket2 = context2.socket(zmq.REQ) | |||
| socket2.connect("tcp://192.168.0.12:5556") | |||
| recordFrames = 0 | |||
| startTime = 0 | |||
| def draw_circle(event, x, y, flags, param): | |||
| global recordFrames | |||
| if event == cv2.EVENT_LBUTTONDOWN: | |||
| print(img[y][x]>>8, img[y][x]&0xff) | |||
| print(b[y][x]>>8, b[y][x]&0xff) | |||
| recordFrames = 300 | |||
| startTime = time.time() | |||
| with open("lepton_log.bin", "wb") as f: | |||
| pass | |||
| cv2.namedWindow('image') | |||
| cv2.setMouseCallback('image', draw_circle) | |||
| while 1: | |||
| socket.send(b"Hello") | |||
| # Get the reply. | |||
| message = socket.recv() | |||
| socket2.send(b"Hello") | |||
| gridEyeData = socket2.recv() | |||
| if recordFrames > 0: | |||
| print ("left frames", recordFrames) | |||
| with open("lepton_log.bin", "ab") as f: | |||
| f.write(message) | |||
| f.write(gridEyeData) | |||
| recordFrames -= 1 | |||
| sleepTime = 0.1 - (time.time() - startTime) | |||
| if sleepTime > 0: | |||
| time.sleep(sleepTime) # wait 0.1 second | |||
| startTime = time.time() | |||
| continue | |||
| img = np.array(struct.unpack("<19200H", message), dtype=np.uint16).reshape((120, 160)) | |||
| # img = np.ndarray(shape=(19200,),dtype='<u2', buffer=message).reshape((120, 160)) | |||
| #img = np.frombuffer(message, dtype=np.uint16).reshape((120, 160)) | |||
| b = img.copy() | |||
| for x in range(160): | |||
| for y in range(120): | |||
| b[y][x] = ((img[y][x]&0xff)<<8) + (img[y][x]>>8) | |||
| b = cv2.normalize(b, dst=None, alpha=0, beta=65535, norm_type=cv2.NORM_MINMAX) | |||
| #img = img.astype(np.uint8) | |||
| #image = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR) | |||
| #cvuint8 = cv2.convertScaleAbs(image) | |||
| cv2.imshow("image", b) | |||
| # cv2.imshow("image_o", img) | |||
| gridEyeImg = np.frombuffer(gridEyeData, dtype=np.uint8).reshape((32, 8)) | |||
| cv2.imshow("gridEyeImg", cv2.resize(gridEyeImg, (160, 640))) | |||
| key = cv2.waitKey(100) | |||
| if key == ord('q'): | |||
| break | |||
| cv2.destroyAllWindows() | |||