Пример #1
0
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()
Пример #2
0
    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.")
Пример #3
0
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)
Пример #4
0
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()
Пример #5
0
    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.")
Пример #6
0
    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.")