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