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
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!")
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
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)
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)
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!")