def main(): # thread = threading.Thread(target=wait_sig) # thread.start() # thread.join() camera = arducam.mipi_camera() print("Open camera...") camera.init_camera() print("Setting the resolution...") fmt = camera.set_resolution(12800, 800) print("res set") for i in range(7): camera.write_sensor_reg(regs[i][0], regs[i][1]) camera.set_control(v4l2.V4L2_CID_VFLIP, 1) camera.set_control(v4l2.V4L2_CID_HFLIP, 1) camera.set_control(v4l2.V4L2_CID_EXPOSURE, 1) print("Current resolution is {}".format(fmt)) set_controls(camera) capture(camera) # sleep(1) # capture(camera) # for i in range(100): # capture(camera) # print(i) print("Close camera...") camera.close_camera()
def init_camera(self): self.camera = arducam.mipi_camera() self.camera.init_camera() print("Camera open.") self.camera.set_resolution(*self.res) # use mode 5 or 11 for 1280x800 2lane raw8 capture self.camera.set_mode(self.config["mode"]) self.camera.set_control(v4l2.V4L2_CID_VFLIP, 1) self.camera.set_control(v4l2.V4L2_CID_HFLIP, 1) self.camera.set_control(v4l2.V4L2_CID_EXPOSURE, self.config["exposure"]) print("Camera set.")
def main(): try: camera = arducam.mipi_camera() print("Open camera...") camera.init_camera() print("Setting the resolution...") fmt = camera.set_resolution(1920, 1080) print("Current resolution is {}".format(fmt)) print("Start preview...") camera.start_preview(fullscreen=False, window=(0, 0, 1280, 720)) set_controls(camera) curses.wrapper(draw_menu, camera) print("Stop preview...") camera.stop_preview() print("Close camera...") camera.close_camera() except Exception as e: print(e)
def main(): thread = threading.Thread(target=wait_sig) thread.start() thread.join() camera = arducam.mipi_camera() print("Open camera...") camera.init_camera() print("Setting the resolution...") fmt = camera.set_resolution(1920, 1080) camera.set_control(v4l2.V4L2_CID_VFLIP, 1) camera.set_control(v4l2.V4L2_CID_HFLIP, 1) print("Current resolution is {}".format(fmt)) set_controls(camera) # sleep(1) # capture(camera) for i in range(100): capture(camera) print(i) print("Close camera...") camera.close_camera()
def capture(self): camera = arducam.mipi_camera() camera.init_camera() print("Camera open.") camera.set_resolution(*self.config["resolution"]) # use mode 5 or 11 for 1280x800 2lane raw8 capture camera.set_mode(self.config["mode"]) camera.set_control(v4l2.V4L2_CID_VFLIP, 1) camera.set_control(v4l2.V4L2_CID_HFLIP, 1) camera.set_control(v4l2.V4L2_CID_EXPOSURE, self.config["exposure"]) print("Camera set.\n") dropped = 0 t_overall = time.time() while not self.trigger_latched.value: i = self.ind.value # capture a frame in continuous capture frame = camera.capture(encoding="raw", quality=90) self.timestamp[i] = time.time() # wait for detection thread to finish copying from buffer self.buffer_copied.wait() self.buffer_copied.clear() # presentaion timestamp self.pts[i] = frame.buffer_ptr[0].pts # diff in pts from last frame self.timediff[i] = self.pts[i] - self.pts[i - 1] # number of frame skipped from last frame, gives 2ms margin self.skipped[i] = int((self.timediff[i] - 2000) / 10000) # saves image to buffer self.buffer[i] = np.ctypeslib.as_array(frame.buffer_ptr[0].data, shape=self.res) self.ind.value = (i + 1) % self.buffer_len self.frame_taken.set() # print FPS every time buffer is filled if i == 0: fps = self.buffer_len / (time.time() - t_overall) if fps < 500: print("FPS: {:3.2f}".format(fps), end="\t") print("Dropped: %d" % np.sum(self.skipped), end="\t") print("Motion: {:8d}".format(np.max(self.pixdiff))) t_overall = time.time() # take remaining frames for j in range(self.config["frames_after"]): i = self.ind.value frame = camera.capture(encoding="raw", quality=90) self.timestamp[i] = time.time() self.pts[i] = frame.buffer_ptr[0].pts self.timediff[i] = self.pts[i] - self.pts[i - 1] self.skipped[i] = int((self.timediff[i] - 2000) / 10000) self.buffer[i] = np.ctypeslib.as_array(frame.buffer_ptr[0].data, shape=self.res) self.ind.value = (i + 1) % self.buffer_len print("Remaining frames taken.", end=" ") # roll buffer position so the last taken image is positioned last i = self.ind.value self.buffer[:] = np.roll(self.buffer, -i, axis=0) camera.close_camera() print("Camera closed.")
for col_index, value in enumerate(row[0]): try: lateral_cal_map[row_index][0][col_index] = raw_lateral_cal_map[row_index][0][col_index] lateral_cal_map[row_index][1][col_index] = raw_lateral_cal_map[row_index][1][col_index] except IndexError: lateral_cal_map[row_index][0][col_index] = -32767.0 lateral_cal_map[row_index][1][col_index] = -32767.0 T = 200 E = 5000 # image = cv2.imread('cal_test.tif', cv2.IMREAD_GRAYSCALE) # image = cv2.imread('round_test.tif', cv2.IMREAD_GRAYSCALE) camera = arducam.mipi_camera() camera.init_camera() fmt = camera.set_resolution(640, 480) camera.set_control(v4l2.V4L2_CID_EXPOSURE, E) data_points = np.zeros((640, 2), np.float) frame = camera.capture(encoding = 'i420') height = int(align_up(fmt[1], 16)) width = int(align_up(fmt[0], 32)) image = frame.as_array.reshape(int(height * 1.5), width) # image = cv2.cvtColor(image, cv2.COLOR_YUV2BGR_I420) image = cv2.cvtColor(image, cv2.COLOR_YUV2GRAY_I420) image = cv2.rotate(image, rotateCode=cv2.ROTATE_180) thresh = cv2.threshold(image, T, 255, cv2.THRESH_BINARY)[1]
def capture(self): camera = arducam.mipi_camera() camera.init_camera() print("Camera open.") camera.set_resolution(*self.config["resolution"]) # use mode 5 or 11 for 1280x800 2lane raw8 capture camera.set_mode(self.config["mode"]) camera.set_control(v4l2.V4L2_CID_VFLIP, 1) camera.set_control(v4l2.V4L2_CID_HFLIP, 1) camera.set_control(v4l2.V4L2_CID_EXPOSURE, self.config["exposure"]) print("Camera set.\n") dropped = 0 t_overall = time.time() t_snapshot = time.time() while not self.trigger_latched.value: i = self.ind.value try: # capture a frame in continuous capture frame = camera.capture(encoding="raw", quality=90) self.timestamp[i] = time.time() # wait for detection thread to finish copying from buffer self.buffer_copied.wait() self.buffer_copied.clear() # presentaion timestamp self.pts[i] = frame.buffer_ptr[0].pts # diff in pts from last frame self.timediff[i] = self.pts[i] - self.pts[i - 1] # number of frame skipped from last frame, gives 2ms margin self.skipped[i] = int((self.timediff[i] - 2000) / 10000) # saves image to buffer self.buffer[i] = np.ctypeslib.as_array( frame.buffer_ptr[0].data, shape=self.res) self.ind.value = (i + 1) % self.buffer_len self.frame_taken.set() except ValueError: print("Camera disconnected.") GPIO.output(self.config["output_pins"]["trig"], GPIO.HIGH) time.sleep(0.1) self.frame_taken.set() break if time.time() - t_snapshot > 300: t_snapshot = time.time() im = Image.fromarray(self.buffer[0]).convert("L") d = datetime.now().strftime(self.config["date_format"]) path = os.path.join(self.config["save_path"], d + self.config["image_format"]) im.save(path) # print FPS every time buffer is filled if i == 0: fps = self.buffer_len / (time.time() - t_overall) if fps < 500: print("FPS: {:3.2f}".format(fps), end="\t") print("Dropped: %d" % np.sum(self.skipped)) t_overall = time.time() i = self.ind.value self.buffer[:] = np.roll(self.buffer, -i, axis=0) camera.close_camera() print("Camera closed.")