Browse Source

git-svn-id: http://newslabx.csie.ntu.edu.tw/svn/Ginger@19 5747cdd2-2146-426f-b2b0-0570f90b98ed

master
Hobe 5 years ago
parent
commit
e35961bbc1
1 changed files with 100 additions and 0 deletions
  1. +100
    -0
      trunk/code/readGridEye.py

+ 100
- 0
trunk/code/readGridEye.py View File

@ -0,0 +1,100 @@
import cv2
import serial
import threading
import time
class Frame():
def __init__(self, time, data):
self.time = time
self.data = data
class GridEye():
def __init__(self, serialPort, baudrate):
self.port = serial.Serial(serialPort, baudrate)
self.frames = []
self.reading = True
self.thread = threading.Thread(target = self.reader)
self.thread.setDaemon(True)
def start(self):
self.thread.start()
def stop(self):
self.reading = False
self.thread.join()
def reader(self):
data = []
data_time = 0;
while (self.reading):
line = b''
while (self.reading):
c = self.port.read()
if c == b'\r':
c = self.port.read()
break
if c == b'\n':
break
line += c
#line = self.port.readline()#.decode('utf-8')
# if line:
# print (line)
# time.sleep(0.01)
# if self.port.in_waiting > 0:
# print (self.port.in_waiting)
if b'#' in line:
if len(data) == 8:
print (data_time)
#print (data)
self.frames.append(Frame(data_time, data))
if len(self.frames) > 100:
self.frames.pop(0)
else:
print ('something wrong', len(data))
data_time = time.time()
data = []
else:
try:
row = [float(x) for x in line.split()]
if len(row) == 8:
data.append(row)
except ValueError as e:
print ('error', e)
data_time = time.time()
data = []
if len(data) > 8:
data.pop(0)
if __name__ == '__main__':
import cv2
import numpy as np
SIZE = 128
overlap = 120
grideye = GridEye('COM12', 115200)
grideye.start()
cv2.imshow('sample', np.empty((SIZE*2,SIZE*2), np.uint8))
while True:
if len(grideye.frames) > 0:
frame = grideye.frames.pop(0)
img = (np.array(frame.data)-15)*10
img = cv2.resize(img.astype(np.uint8), (SIZE,SIZE), interpolation = cv2.INTER_LINEAR)
img2 = np.copy(img)
out = np.empty((SIZE*2, SIZE*2), dtype=np.uint16)
out[:SIZE, :SIZE] = img
out[:SIZE, SIZE:] = img2
out[SIZE:, :SIZE] = img
out[SIZE:, (SIZE-overlap):SIZE] += img2[:,:overlap]
out[SIZE:, (SIZE-overlap):SIZE] = out[SIZE:, (SIZE-overlap):SIZE]/2
out[SIZE:, SIZE:SIZE+(SIZE-overlap)] = img2[:,overlap:SIZE]
out = out.astype(np.uint8)
cv2.imshow('sample', out)
if cv2.waitKey(1) == ord('q'):
break
time.sleep(0.001)
grideye.stop()

Loading…
Cancel
Save