コード例 #1
0
def video():
    global flag, regArr, handle
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if res == 0:
        openFlag = True
        print "device open success!"
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0],
                                                 regArr[regNum][1])
            regNum = regNum + 1
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)

        if res == 0:
            print "transfer task create success!"
            while flag:
                res = ArducamSDK.Py_ArduCam_capture(handle)
                if res != 0:
                    print "capture fail!"
                    break
                time.sleep(0.03)
                if flag == False:
                    break
        else:
            print "transfer task create fail!"
        res = ArducamSDK.Py_ArduCam_close(handle)

        if res == 0:
            openFlag = False
            print "device close success!"
        else:
            print "device close fail!"
    else:
        print "device open fail!"
コード例 #2
0
def show2():
    global flag, regArr, handle
    global W_zoom, H_zoom, V_value, H_value, lx, ly, downFlag, saveFlag, saveNum
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if res == 0:
        openFlag = True
        print "device open success!"
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0],
                                                 regArr[regNum][1])
            regNum = regNum + 1
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)
        if res == 0 and flag:
            print "transfer task create success!"
            res = ArducamSDK.Py_ArduCam_capture(handle)
            if ArducamSDK.Py_ArduCam_available(handle) > 0:
                print "estou available"
                res, data = ArducamSDK.Py_ArduCam_read(handle, Width * Height)

                image = Image.frombuffer("L", (Width, Height), data)
                img = np.array(image)
                height, width = img.shape[:2]
                img2 = cv2.cvtColor(img, COLOR_BYTE2RGB)

                if args.name and capture:
                    cv2.imwrite(args.name + "." + args.type, img2)
                if not args.show:
                    return
                if saveFlag:
                    saveFlag = False
                    saveNum += 1
                    name = ""
                    if "bmp" == args.type:
                        name = str(saveNum) + ".bmp"
                    if "png" == args.type:
                        name = str(saveNum) + ".png"
                    if "jpg" == args.type:
                        name = str(saveNum) + ".jpg"
                    cv2.imwrite(name, img2)

            if res != 0:
                print "capture fail!"
                return
            if flag == False:
                return
        else:
            print "transfer task create fail!"
        res = ArducamSDK.Py_ArduCam_close(handle)

        if res == 0:
            openFlag = False
            print "device close success!"
        else:
            print "device close fail!"
    else:
        print "device open fail!"
コード例 #3
0
def readThread():
    global timestamps, images

    handle = {}
    data = {}
    
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    #print(handle)
    #print(3)
    if res == 0:
        print("device open success!")
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0], regArr[regNum][1])
            regNum = regNum + 1
        #print(32143)
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)
        if res == 0:
            print("transfer task create success!")
            while not rospy.is_shutdown():
                #print(2134124)
                res = ArducamSDK.Py_ArduCam_capture(handle)
                #print(res)
                if res == 0:
                    timestamp = rospy.Time.now()
                    #print(7324627864)
                    res, data = ArducamSDK.Py_ArduCam_read(handle, Width * Height)
                    #print(34242)
                    if res == 0:
                        #print(3746827346782)
                        ArducamSDK.Py_ArduCam_del(handle)
                        #print(374623846278)
                        timestamps.put(timestamp)
                        #print(3742846237846)
                        images.put(data)
                        #print(382746278346782)
                        time.sleep(0.03)
                    else:
                        print("read data fail!")
                if res != 0:
                    print("capture fail!")
                    break
        else:
            print("transfer task create fail!")

        res = ArducamSDK.Py_ArduCam_close(handle)
        if res == 0:
            print("device close success!")
        else:
            print("device close fail!")
    else:
        print("device open fail!")
コード例 #4
0
ファイル: camera.py プロジェクト: vossenv/spypi
 def connect_cam(self):
     code = -1
     self.logger.info("Connecting to arducam")
     for i in range(self.init_retry):
         self.logger.info("Attempt: {}".format(i))
         code, self.handle, rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(
             self.cam_config)
         if code == 0:
             self.usb_version = rtn_cfg['usbType']
             self.logger.info("Camera connected!")
             return
         time.sleep(self.init_delay)
     raise ArducamException("Failed to connect to camera", code=code)
コード例 #5
0
def camera_initFromFile(fialeName):
    global cfg,handle,Width,Height,color_mode
    #load config file
    config = json.load(open(fialeName,"r"))

    camera_parameter = config["camera_parameter"]
    Width = int(camera_parameter["SIZE"][0])
    Height = int(camera_parameter["SIZE"][1])

    BitWidth = camera_parameter["BIT_WIDTH"]
    ByteLength = 1
    if BitWidth > 8 and BitWidth <= 16:
        ByteLength = 2
    FmtMode = int(camera_parameter["FORMAT"][0])
    color_mode = (int)(camera_parameter["FORMAT"][1])
    rospy.loginfo("color mode %d",color_mode)

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


    ret,handle,rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(cfg)

    if ret == 0:
        usb_version = rtn_cfg['usbType']
        rospy.loginfo("USB VERSION:%d",usb_version)
        #config board param
        configBoard(config["board_parameter_dev2"])
        writeSensorRegs(config["register_parameter"])

        rtn_val,datas = ArducamSDK.Py_ArduCam_readUserData(handle,0x400-16, 16)
        rospy.loginfo("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])

        return True
    else:
        rospy.logfatal("Device open fail (rtn_val = %d)",ret)
        return False
コード例 #6
0
def init_and_read_arducam():
    global flag, regArr, handle, openFlag
    regNum = 0
    res, handle = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if res == 0:
        openFlag = True
        print("device open success!")
        while (regArr[regNum][0] != 0xFFFF):
            ArducamSDK.Py_ArduCam_writeSensorReg(handle, regArr[regNum][0],
                                                 regArr[regNum][1])
            regNum = regNum + 1
        res = ArducamSDK.Py_ArduCam_beginCapture(handle)

        if res == 0:
            print("transfer task create success!")
            while flag:
                res = ArducamSDK.Py_ArduCam_capture(handle)
                if res != 0:
                    print("capture failed!")
                    flag = False
                    break
                time.sleep(0.1)
                if flag == False:
                    break
        else:
            print("transfer task create fail!")

        time.sleep(2)
        res = ArducamSDK.Py_ArduCam_close(handle)
        if res == 0:
            openFlag = False
            print("device close success!")
        else:
            print("device close fail!")
    else:
        print("device open fail!")
コード例 #7
0
def camera_initFromFile(fialeName):
    global cfg, handle, Width, Height, color_mode, save_raw
    #load config file
    config = json.load(open(fialeName, "r"))

    camera_parameter = config["camera_parameter"]
    Width = int(camera_parameter["SIZE"][0])
    Height = int(camera_parameter["SIZE"][1])

    BitWidth = camera_parameter["BIT_WIDTH"]
    ByteLength = 1
    if BitWidth > 8 and BitWidth <= 16:
        ByteLength = 2
        save_raw = True
    FmtMode = int(camera_parameter["FORMAT"][0])
    color_mode = (int)(camera_parameter["FORMAT"][1])
    print("color mode", color_mode)

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

    # ArducamSDK.
    #ret,handle,rtn_cfg = ArducamSDK.Py_ArduCam_open(cfg,0)
    ret, handle, rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if ret == 0:

        #ArducamSDK.Py_ArduCam_writeReg_8_8(handle,0x46,3,0x00)
        usb_version = rtn_cfg['usbType']
        #print("USB VERSION:",usb_version)
        #config board param
        configBoard(config["board_parameter"])

        if usb_version == ArducamSDK.USB_1 or usb_version == ArducamSDK.USB_2:
            configBoard(config["board_parameter_dev2"])
        if usb_version == ArducamSDK.USB_3:
            configBoard(config["board_parameter_dev3_inf3"])
        if usb_version == ArducamSDK.USB_3_2:
            configBoard(config["board_parameter_dev3_inf2"])

        writeSensorRegs(config["register_parameter"])

        if usb_version == ArducamSDK.USB_3:
            writeSensorRegs(config["register_parameter_dev3_inf3"])
        if usb_version == ArducamSDK.USB_3_2:
            writeSensorRegs(config["register_parameter_dev3_inf2"])

        rtn_val, datas = ArducamSDK.Py_ArduCam_readUserData(
            handle, 0x400 - 16, 16)
        print("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]))

        return True
    else:
        print("open fail,rtn_val = ", ret)
        return False
コード例 #8
0
def camera_initFromFile(fialeName):
    global cfg,handle,Width,Height,color_mode
    #load config file
    config = json.load(open(fialeName,"r"))

    camera_parameter = config["camera_parameter"]
    Width = int(camera_parameter["SIZE"][0])
    Height = int(camera_parameter["SIZE"][1])

    BitWidth = camera_parameter["BIT_WIDTH"]
    ByteLength = 1
    if BitWidth > 8 and BitWidth <= 16:
        ByteLength = 2
    FmtMode = int(camera_parameter["FORMAT"][0])
    color_mode = (int)(camera_parameter["FORMAT"][1])
    print "color mode",color_mode

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

    # ArducamSDK.

    if serial_selection == None:
        ret,handle,rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(cfg)
    else:
        index = None
        num_cam, cam_list, cam_serial = ArducamSDK.Py_ArduCam_scan()
        for i in range(num_cam):
            datas = cam_serial[i]
            camera_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])
            if camera_serial == str(serial_selection):
                print("Arducam " + str(serial_selection) + " found")
                index = i
                break
        if index == None:
            print("Arducam " + str(serial_selection) + " not found")
            exit()
        time.sleep(3) 
        ret,handle,rtn_cfg = ArducamSDK.Py_ArduCam_open(cfg,i)
                
    if ret == 0:
        usb_version = rtn_cfg['usbType']
        print "USB VERSION:",usb_version
        #config board param
        configBoard(config["board_parameter"])

        if usb_version == ArducamSDK.USB_1 or usb_version == ArducamSDK.USB_2:
            configBoard(config["board_parameter_dev2"])
        if usb_version == ArducamSDK.USB_3:
            configBoard(config["board_parameter_dev3_inf3"])
        if usb_version == ArducamSDK.USB_3_2:
            configBoard(config["board_parameter_dev3_inf2"])
        
        writeSensorRegs(config["register_parameter"])
        
        if usb_version == ArducamSDK.USB_3:
            writeSensorRegs(config["register_parameter_dev3_inf3"])
        if usb_version == ArducamSDK.USB_3_2:
            writeSensorRegs(config["register_parameter_dev3_inf2"])

        rtn_val,datas = ArducamSDK.Py_ArduCam_readUserData(handle,0x400-16, 16)
        print "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])

        return True
    else:
        print "open fail,rtn_val = ",ret
        return False
コード例 #9
0
    def camera_initFromFile(self, mainconf, expconf):
        self.expconf = expconf
        self.fileName = mainconf
        config = arducam_config_parser.LoadConfigFile(self.fileName)

        camera_parameter = config.camera_param.getdict()
        self.Width = camera_parameter["WIDTH"]
        self.Height = camera_parameter["HEIGHT"]

        self.BitWidth = camera_parameter["BIT_WIDTH"]
        self.ByteLength = 1
        if self.BitWidth > 8 and self.BitWidth <= 16:
            self.ByteLength = 2
        self.FmtMode = camera_parameter["FORMAT"][0]
        self.color_mode = camera_parameter["FORMAT"][1]
        #        print("color mode",self.color_mode)

        self.I2CMode = camera_parameter["I2C_MODE"]
        self.I2cAddr = camera_parameter["I2C_ADDR"]
        self.TransLvl = camera_parameter["TRANS_LVL"]
        self.cfg = {
            "u32CameraType": 0x00,
            "u32Width": self.Width,
            "u32Height": self.Height,
            "usbType": 0,
            "u8PixelBytes": self.ByteLength,
            "u16Vid": 0,
            "u32Size": 0,
            "u8PixelBits": self.BitWidth,
            "u32I2cAddr": self.I2cAddr,
            "emI2cMode": self.I2CMode,
            "emImageFmtMode": self.FmtMode,
            "u32TransLvl": self.TransLvl
        }

        ret, self.handle, self.rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(
            self.cfg)
        if ret == 0:

            usb_version = self.rtn_cfg['usbType']
            configs = config.configs
            configs_length = config.configs_length
            for i in range(configs_length):
                #                print(configs[i].params[0])
                type = configs[i].type
                if ((type >> 16) & 0xFF) != 0 and (
                    (type >> 16) & 0xFF) != usb_version:
                    continue
                if type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_REG:
                    if configs[i].params[0] == 12306:
                        configs[i].params[1] = self.config_exposure(
                            self.expconf)
                    ArducamSDK.Py_ArduCam_writeSensorReg(
                        self.handle, configs[i].params[0],
                        configs[i].params[1])
                elif type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_DELAY:
                    time.sleep(float(configs[i].params[0]) / 1000)
                elif type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_VRCMD:
                    self.configBoard(configs[i])

            rtn_val, datas = ArducamSDK.Py_ArduCam_readUserData(
                self.handle, 0x400 - 16, 16)
            print(
                "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]))

            return True
        else:
            print("open fail,rtn_val = ", ret)
            return False
コード例 #10
0
def camera_initFromFile(fileName):
    global cfg, handle, Width, Height, color_mode
    #load config file
    config = arducam_config_parser.LoadConfigFile(fileName)

    camera_parameter = config.camera_param.getdict()
    Width = camera_parameter["WIDTH"]
    Height = camera_parameter["HEIGHT"]

    BitWidth = camera_parameter["BIT_WIDTH"]
    ByteLength = 1
    if BitWidth > 8 and BitWidth <= 16:
        ByteLength = 2
    FmtMode = camera_parameter["FORMAT"][0]
    color_mode = camera_parameter["FORMAT"][1]
    print "color mode", color_mode

    I2CMode = camera_parameter["I2C_MODE"]
    I2cAddr = camera_parameter["I2C_ADDR"]
    TransLvl = camera_parameter["TRANS_LVL"]
    cfg = {
        "u32CameraType": 0x00,
        "u32Width": Width,
        "u32Height": Height,
        "usbType": 0,
        "u8PixelBytes": ByteLength,
        "u16Vid": 0,
        "u32Size": 0,
        "u8PixelBits": BitWidth,
        "u32I2cAddr": I2cAddr,
        "emI2cMode": I2CMode,
        "emImageFmtMode": FmtMode,
        "u32TransLvl": TransLvl
    }

    # ArducamSDK.

    if serial_selection == None:
        ret, handle, rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(cfg)
    else:
        index = None
        num_cam, cam_list, cam_serial = ArducamSDK.Py_ArduCam_scan()
        for i in range(num_cam):
            datas = cam_serial[i]
            camera_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])
            if camera_serial == str(serial_selection):
                print("Arducam " + str(serial_selection) + " found")
                index = i
                break
        if index == None:
            print("Arducam " + str(serial_selection) + " not found")
            exit()
        time.sleep(3)
        ret, handle, rtn_cfg = ArducamSDK.Py_ArduCam_open(cfg, i)

    if ret == 0:
        usb_version = rtn_cfg['usbType']
        print "USB VERSION:", usb_version
        configs = config.configs
        configs_length = config.configs_length
        for i in range(configs_length):
            type = configs[i].type
            if ((type >> 16) & 0xFF) != 0 and (
                (type >> 16) & 0xFF) != usb_version:
                continue
            if type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_REG:
                ArducamSDK.Py_ArduCam_writeSensorReg(handle,
                                                     configs[i].params[0],
                                                     configs[i].params[1])
            elif type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_DELAY:
                time.sleep(float(configs[i].params[0]) / 1000)
            elif type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_VRCMD:
                configBoard(configs[i])

        rtn_val, datas = ArducamSDK.Py_ArduCam_readUserData(
            handle, 0x400 - 16, 16)
        print "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])

        return True
    else:
        print "open fail,rtn_val = ", ret
        return False
コード例 #11
0
def camera_initFromFile(fileName):
    global cfg, handle, Width, Height, color_mode, save_raw
    #load config file
    # config = json.load(open(fialeName,"r"))
    config = arducam_config_parser.LoadConfigFile(fileName)

    camera_parameter = config.camera_param.getdict()
    Width = camera_parameter["WIDTH"]
    Height = camera_parameter["HEIGHT"]

    BitWidth = camera_parameter["BIT_WIDTH"]
    ByteLength = 1
    if BitWidth > 8 and BitWidth <= 16:
        ByteLength = 2
        save_raw = True
    FmtMode = camera_parameter["FORMAT"][0]
    color_mode = camera_parameter["FORMAT"][1]
    print("color mode", color_mode)

    I2CMode = camera_parameter["I2C_MODE"]
    I2cAddr = camera_parameter["I2C_ADDR"]
    TransLvl = camera_parameter["TRANS_LVL"]
    cfg = {
        "u32CameraType": 0x00,
        "u32Width": Width,
        "u32Height": Height,
        "usbType": 0,
        "u8PixelBytes": ByteLength,
        "u16Vid": 0,
        "u32Size": 0,
        "u8PixelBits": BitWidth,
        "u32I2cAddr": I2cAddr,
        "emI2cMode": I2CMode,
        "emImageFmtMode": FmtMode,
        "u32TransLvl": TransLvl
    }

    #ret,handle,rtn_cfg = ArducamSDK.Py_ArduCam_open(cfg,0)
    ret, handle, rtn_cfg = ArducamSDK.Py_ArduCam_autoopen(cfg)
    if ret == 0:

        #ArducamSDK.Py_ArduCam_writeReg_8_8(handle,0x46,3,0x00)
        usb_version = rtn_cfg['usbType']
        configs = config.configs
        configs_length = config.configs_length
        for i in range(configs_length):
            type = configs[i].type
            if ((type >> 16) & 0xFF) != 0 and (
                (type >> 16) & 0xFF) != usb_version:
                continue
            if type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_REG:
                ArducamSDK.Py_ArduCam_writeSensorReg(handle,
                                                     configs[i].params[0],
                                                     configs[i].params[1])
            elif type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_DELAY:
                time.sleep(float(configs[i].params[0]) / 1000)
            elif type & 0xFFFF == arducam_config_parser.CONFIG_TYPE_VRCMD:
                configBoard(configs[i])

        rtn_val, datas = ArducamSDK.Py_ArduCam_readUserData(
            handle, 0x400 - 16, 16)
        print("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]))

        return True
    else:
        print("open fail,rtn_val = ", ret)
        return False