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