| @ -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() | |||||