def __init__(self,
                 blink_control=None,
                 serialtouse=None,
                 config_file_name="AR0135_1280x964_ext_trigger_M.json"):
        if not os.path.exists(config_file_name):
            print("Config file does not exist.")
            exit()

        devices_num, index, serials = ArducamSDK.Py_ArduCam_scan()
        print("Found %d devices" % devices_num)
        self.indextouse = None
        for i in range(devices_num):
            datas = serials[i]
            serial = ""
            for it, d in enumerate(datas[0:12]):
                serial = serial + "%c" % d
                if (it % 4) == 3 and it < 11: serial = serial + "-"
            if serialtouse is None:
                if i == 0: usethis = True
            else:
                if serial == serialtouse: usethis = True
            if usethis: self.indextouse = i
            print("Index:", index[i], "Serial:", serial, "Use:", usethis)

        time.sleep(2)

        self.handle = self.camera_initFromFile(config_file_name)
        if self.handle != None:
            ret_val = ArducamSDK.Py_ArduCam_setMode(
                self.handle, ArducamSDK.EXTERNAL_TRIGGER_MODE)
            if (ret_val == ArducamSDK.USB_BOARD_FW_VERSION_NOT_SUPPORT_ERROR):
                print("USB_BOARD_FW_VERSION_NOT_SUPPORT_ERROR")
                exit(0)
        self.prs = QB()
        self.blink_control = blink_control
Пример #2
0
    def cameramain(self, config_file_name, expconf, child_conn):
        if self.camera_initFromFile(config_file_name, expconf):
            ArducamSDK.Py_ArduCam_setMode(self.handle,
                                          ArducamSDK.CONTINUOUS_MODE)
            ct = threading.Thread(target=self.captureImage_thread)
            rt = threading.Thread(target=self.readImage_thread,
                                  args=(child_conn, ))
            ct.start()
            rt.start()
            while True:
                reload = child_conn.recv()
                print("reloading configuration file")
                if reload == False:
                    self.loading = False
                if reload == 'quit':
                    self.running = False
                    sys.exit()
                    break

            ct.join()
            rt.join()

            rtn_val = ArducamSDK.Py_ArduCam_close(self.handle)

            if rtn_val == 0:
                print("device close success!")
            else:
                print("device close fail!")
Пример #3
0
 def initCamera(self):
     try:
         if self.camera_initFromFile(self.config_file_name):
             ArducamSDK.Py_ArduCam_setMode(handle,
                                           ArducamSDK.CONTINUOUS_MODE)
         return self.OP_OK
     except Exception as ex:
         logging.exception("Error during camera initialization!")
         return self.OP_ERR
Пример #4
0
    def configure(self):
        camera_parameter = self.register_config["camera_parameter"]
        self.width = int(camera_parameter["SIZE"][0])
        self.height = int(camera_parameter["SIZE"][1])
        BitWidth = camera_parameter["BIT_WIDTH"]
        ByteLength = 1
        if BitWidth > 8 and BitWidth <= 16:
            ByteLength = 2
            self.save_raw = True
        FmtMode = int(camera_parameter["FORMAT"][0])
        self.color_mode = (int)(camera_parameter["FORMAT"][1])

        I2CMode = camera_parameter["I2C_MODE"]
        I2cAddr = int(camera_parameter["I2C_ADDR"], 16)
        TransLvl = int(camera_parameter["TRANS_LVL"])
        self.cam_config = {
            "u32CameraType": 0x4D091031,
            "u32Width": self.width,
            "u32Height": self.height,
            "usbType": 0,
            "u8PixelBytes": ByteLength,
            "u16Vid": 0,
            "u32Size": 0,
            "u8PixelBits": BitWidth,
            "u32I2cAddr": I2cAddr,
            "emI2cMode": I2CMode,
            "emImageFmtMode": FmtMode,
            "u32TransLvl": TransLvl
        }

        self.connect_cam()
        self.configure_board("board_parameter")
        if self.usb_version == ArducamSDK.USB_1 or self.usb_version == ArducamSDK.USB_2:
            self.configure_board("board_parameter_dev2")
        if self.usb_version == ArducamSDK.USB_3:
            self.configure_board("board_parameter_dev3_inf3")
        if self.usb_version == ArducamSDK.USB_3_2:
            self.configure_board("board_parameter_dev3_inf2")

        self.write_regs("register_parameter")
        if self.usb_version == ArducamSDK.USB_3:
            self.write_regs("register_parameter_dev3_inf3")
        if self.usb_version == ArducamSDK.USB_3_2:
            self.write_regs("register_parameter_dev3_inf2")

        code = ArducamSDK.Py_ArduCam_setMode(self.handle,
                                             ArducamSDK.CONTINUOUS_MODE)
        if code != 0:
            raise ArducamException("Failed to set mode", code=code)
Пример #5
0
    def initCamera(self):
        try:
            if self.camera_initFromFile(self.config_file_name):
                ArducamSDK.Py_ArduCam_setMode(handle,
                                              ArducamSDK.CONTINUOUS_MODE)
                cam = Camera({})
                self.ct = threading.Thread(target=cam.capture_thread)
                self.rt = threading.Thread(target=cam.process_thread)
                self.ct.start()
                self.rt.start()

            return self.OP_OK
        except Exception as ex:
            logging.exception("Error during camera initialization!")
            return self.OP_ERR
    devices_num, index, serials = ArducamSDK.Py_ArduCam_scan()
    print "Found %d devices" % devices_num
    for i in range(devices_num):
        datas = serials[i]
        serial = "%c%c%c%c-%c%c%c%c-%c%c%c%c" % (datas[0], datas[1], datas[2], datas[3],
                                                 datas[4], datas[5], datas[6], datas[7],
                                                 datas[8], datas[9], datas[10], datas[11])
        print "Index:", index[i], "Serial:", serial

    time.sleep(2)

    for i in range(devices_num):
        handle = camera_initFromFile(config_file_name, i)
        if handle != None:
            ret_val = ArducamSDK.Py_ArduCam_setMode(handle, ArducamSDK.EXTERNAL_TRIGGER_MODE)
            if (ret_val == ArducamSDK.USB_BOARD_FW_VERSION_NOT_SUPPORT_ERROR):
                print "USB_BOARD_FW_VERSION_NOT_SUPPORT_ERROR"
                exit(0)
            handles.append(handle)
            totalFrames.append(0)

    while running and len(handles):
        for i in range(len(handles)):
            handle = handles[i]
            value = ArducamSDK.Py_ArduCam_isFrameReady(handle)
            if value == 1:
                getAndDisplaySingleFrame(handle, i)
            # else:
            #    ArducamSDK.Py_ArduCam_softTrigger(handle)#soft trigger
        cv2.waitKey(10)
Пример #7
0
    global COLOR_BayerGB2BGR, COLOR_BayerRG2BGR, COLOR_BayerGR2BGR, COLOR_BayerBG2BGR

    config_file_name = ""
    if len(sys.argv) > 1:
        config_file_name = sys.argv[1]

        if not os.path.exists(config_file_name):
            print("Config file does not exist.")
            exit()
    else:
        showHelp()
        exit()

    if camera_initFromFile(config_file_name):

        ArducamSDK.Py_ArduCam_setMode(handle, ArducamSDK.CONTINUOUS_MODE)

        while True:
            if ArducamSDK.Py_ArduCam_availableImage(handle) > 0:
                print('hello')
                rtn_val, data, rtn_cfg = ArducamSDK.Py_ArduCam_readImage(
                    handle)
                image = convert_image(data, rtn_cfg, color_mode)

    #pause
    #ArducamSDK.Py_ArduCam_writeReg_8_8(handle,0x46,3,0x40)
    rtn_val = ArducamSDK.Py_ArduCam_close(handle)
    if rtn_val == 0:
        print("device close success!")
    else:
        print("device close fail!")