import readGridEyeData
							 | 
						|
								
							 | 
						|
								import sys
							 | 
						|
								import numpy as np
							 | 
						|
								import cv2
							 | 
						|
								
							 | 
						|
								SIZE = 8
							 | 
						|
								visible_size = 128
							 | 
						|
								distanceBetweenSensors_w = 2.6 #cm
							 | 
						|
								distanceBetweenSensors_h = 2.6 #cm
							 | 
						|
								distance2Object = 60.0 #cm
							 | 
						|
								OFFSET = ((0, 0), ())
							 | 
						|
								
							 | 
						|
								TEMP_SCALE = 20
							 | 
						|
								RED = (0, 0, 255)
							 | 
						|
								GREEN = (0, 255, 0)
							 | 
						|
								BLUE = (255, 0, 0)
							 | 
						|
								
							 | 
						|
								background = readGridEyeData.GridEyeData(sys.argv[1])
							 | 
						|
								
							 | 
						|
								background_frames = [np.zeros((SIZE,SIZE)), np.zeros((SIZE,SIZE)),
							 | 
						|
								                     np.zeros((SIZE,SIZE)), np.zeros((SIZE,SIZE))]
							 | 
						|
								cnt = 1
							 | 
						|
								Horizon_array = np.array([[x for x in range(8)] for _ in range(8)])
							 | 
						|
								Vertical_array = np.array([[x for _ in range(8)] for x in range(8)])
							 | 
						|
								
							 | 
						|
								# Gets background of each pixel.
							 | 
						|
								while background.readFrame():
							 | 
						|
								  frames = background.frames
							 | 
						|
								  for i in range(4):
							 | 
						|
								    background_frames[i] += np.array(frames[i].data)
							 | 
						|
								  cnt += 1
							 | 
						|
								  
							 | 
						|
								for i in range(4):
							 | 
						|
								  background_frames[i]/=cnt
							 | 
						|
								
							 | 
						|
								# Reads data from object frames.
							 | 
						|
								objects = readGridEyeData.GridEyeData(sys.argv[2])
							 | 
						|
								
							 | 
						|
								while objects.readFrame():
							 | 
						|
								  frames = objects.frames
							 | 
						|
								  imgs = []
							 | 
						|
								  heat_points = []
							 | 
						|
								
							 | 
						|
								  # Subtracts background and scale the value.
							 | 
						|
								  for i in range(4):
							 | 
						|
								    frame = np.array(frames[i].data) - background_frames[i]
							 | 
						|
								    frame[frame < 0] = 0.0
							 | 
						|
								    frame *= TEMP_SCALE
							 | 
						|
								    frame[frame > 255] = 255
							 | 
						|
								    imgs.append(frame.astype(np.uint8))
							 | 
						|
								    x = int(sum(sum(frame * Horizon_array)) / sum(sum(frame)) / (SIZE - 1) *
							 | 
						|
								        (visible_size - 1))
							 | 
						|
								    y = int(sum(sum(frame * Vertical_array)) / sum(sum(frame)) / (SIZE - 1) *
							 | 
						|
								        (visible_size - 1))
							 | 
						|
								    heat_points.append((x,y))
							 | 
						|
								    print (x, y)
							 | 
						|
								  all_img = np.concatenate((np.concatenate((imgs[0], imgs[1]), axis = 1),
							 | 
						|
								                            np.concatenate((imgs[2], imgs[3]), axis = 1)),
							 | 
						|
								                           axis = 0)
							 | 
						|
								  all_img = cv2.cvtColor(all_img, cv2.COLOR_GRAY2RGB)
							 | 
						|
								  all_img = cv2.resize(all_img, (visible_size*2, visible_size*2),
							 | 
						|
								      interpolation = cv2.INTER_NEAREST)
							 | 
						|
								  cv2.circle(all_img, heat_points[0], 5, RED, -1)
							 | 
						|
								  cv2.circle(all_img, (heat_points[1][0]+visible_size, heat_points[1][1]), 5, RED, -1)
							 | 
						|
								  
							 | 
						|
								  cv2.imshow('sample', all_img)
							 | 
						|
								
							 | 
						|
								
							 | 
						|
								  while cv2.getWindowProperty('sample', 0) >= 0:
							 | 
						|
								    key = cv2.waitKey(50)
							 | 
						|
								    if key >= 0:
							 | 
						|
								      break
							 |