def __init__(self, start, end, rate, step_size=50): self.start = start self.end = end self.rate = rate now = datetime.datetime.now() self.log_direc = "/media/data/Data/Logs/{}_{}_{}_{}_{}/".format( now.year, now.month, now.day, now.hour, now.minute) try: os.mkdir(self.log_direc) except FileExistsError as e: print(e) self.i = 0 self.shaker = shaker.Shaker() self.shaker.change_duty(self.start) self.step_size = step_size cam_num = camera.guess_camera_number() port = STEPPER_CONTROL self.ard = arduino.Arduino(port) self.motors = stepper.Stepper(self.ard) self.motors.move_motor(1, 100, '+') self.motors.move_motor(2, 100, '+') self.motors.move_motor(1, 100, '-') self.motors.move_motor(2, 100, '-') self.cam = camera.Camera(cam_num=cam_num) im = self.cam.get_frame() self.hex, self.center, self.crop, self.mask = self.find_hexagon(im) im = images.crop_and_mask(im, self.crop, self.mask) self.im_shape = im.shape im = images.draw_polygon(im, self.hex) im = images.draw_circle(im, self.center[0], self.center[1], 3) images.display(im)
def im(self): im = self.cam.get_frame() for f in range(10): im = self.cam.get_frame() im = images.crop_and_mask(im, self.crop, self.mask) im = images.bgr_to_gray(im) images.save(im, self.log_direc + '{}_original.png'.format(self.i)) return im
def mean_im(self): ims = [] for f in range(8): im = self.cam.get_frame() im = images.crop_and_mask(im, self.crop, self.mask) im = images.bgr_to_gray(im) ims.append(im) images.save(ims[0], self.log_direc + '{}_original.png'.format(self.i)) mean_im = images.mean(ims) # mean_im = images.mask(mean_im, ring_mask) images.save(mean_im, self.log_direc + '{}_mean.png'.format(self.i)) return mean_im
def mean_im(self): ims = [] for f in range(8): im = ~self.cam.get_frame() im = images.crop_and_mask(im, self.crop, self.mask) # if f == 0: # ring_mask = images.inrange(images.bgr_to_lab(im), (0, 113, 0), # (255, 152, 255)) im = images.bgr_to_gray(im) ims.append(im) images.save(ims[0], self.log_direc + '{}_original.png'.format(self.i)) mean_im = images.mean(ims) # mean_im = images.mask(mean_im, ring_mask) images.save(mean_im, self.log_direc + '{}_mean.png'.format(self.i)) return mean_im
def __init__(self): self.shaker = shaker.Shaker() self.shaker.change_duty(600) port = STEPPER_CONTROL self.ard = arduino.Arduino(port) self.motors = stepper.Stepper(self.ard) cam_num = camera.guess_camera_number() self.cam = camera.Camera(cam_num=cam_num) im = self.cam.get_frame() self.hex, self.center, self.crop, self.mask = self.find_hexagon(im) im = images.crop_and_mask(im, self.crop, self.mask) self.im_shape = im.shape im = images.draw_polygon(im, self.hex) im = images.draw_circle(im, self.center[0], self.center[1], 3) images.display(im)
def analyse(p1, p2): x = [] t = time.time() while (time.time() - t) < 600: time.sleep(4) try: frame = cam.get_frame() frame = images.crop_and_mask(frame, crop_result.bbox, crop_result.mask) frame_blurred = images.gaussian_blur(frame, (15, 15)) red = frame_blurred[:, :, 2] - frame_blurred[:, :, 0] circles = images.find_circles(red, 25, 200, 5, 31, 31) if circles[0, 0] > circles[1, 0]: x.append(circles[1, 0]) x.append(circles[0, 0]) else: x.append(circles[0, 0]) x.append(circles[1, 0]) except: pass x = np.array(x) np.savetxt(f"{data_dir}/x_{p1}_{p2}.txt", x) return x
def get_frame(self): im = self.cam.get_frame() im = images.crop_and_mask(im, self.crop, self.mask) im = images.bgr_to_gray(im) return im
def get_frame(self): frame = self.cam.get_frame() frame = images.crop_and_mask(frame, self.crop, self.mask) return frame
def get_frame(self, crop=True): frame = self.cam.get_frame() if crop: frame = images.crop_and_mask(frame, self.crop, self.mask) return frame
import time data_dir = "/media/data/Data/Orderphobic/TwoIntruders/LevelSampling" ard = arduino.Arduino( "/dev/serial/by-id/usb-Arduino__www.arduino.cc__0043_5573532393535190E022-if00" ) my_stepper = stepper.Stepper(ard) my_shaker = shaker.Shaker() my_shaker.change_duty(600) cam = camera.Camera(camera.guess_camera_number()) frame = cam.get_frame() crop_result = images.crop_polygon(frame) frame = images.crop_and_mask(frame, crop_result.bbox, crop_result.mask) bins = np.linspace(0, frame.shape[1], 100) np.savetxt(f"{data_dir}/bins.txt", bins) def run(): pos1 = -360 pos2 = -360 my_stepper.move_motor(1, 360 * 15, '-') time.sleep(90) my_stepper.move_motor(2, 360 * 15, '-') time.sleep(90) for j in range(9): for i in range(9): print(pos1, pos2)
def fix_frame(frame): frame = ndimage.rotate(frame, -120, reshape=False) frame = images.crop_and_mask(frame, crop_result.bbox, crop_result.mask) return frame
def crop_and_mask(frame, parameters): mask = parameters['mask image'] crop = parameters['crop'] return images.crop_and_mask(frame, crop, mask)