예제 #1
0
def main():
    logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s',
                        level=logging.WARNING)
    callback_obj = gp.check_result(gp.use_python_logging())
    camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera))
    text = gp.check_result(gp.gp_camera_get_summary(camera))
    print('Summary')
    print('=======')
    print(text.text)
    print('Abilities')
    print('=========')
    abilities = gp.check_result(gp.gp_camera_get_abilities(camera))
    print('model:', abilities.model)
    print('status:', abilities.status)
    print('port:', abilities.port)
    print('speed:', abilities.speed)
    print('operations:', abilities.operations)
    print('file_operations:', abilities.file_operations)
    print('folder_operations:', abilities.folder_operations)
    print('usb_vendor:', abilities.usb_vendor)
    print('usb_product:', abilities.usb_product)
    print('usb_class:', abilities.usb_class)
    print('usb_subclass:', abilities.usb_subclass)
    print('usb_protocol:', abilities.usb_protocol)
    print('library:', abilities.library)
    print('id:', abilities.id)
    print('device_type:', abilities.device_type)
    gp.check_result(gp.gp_camera_exit(camera))
    return 0
예제 #2
0
def info():
    context = gp_context_new()
    error, camera = gp_camera_new()
    error = gp_camera_init(camera, context)
    error, text = gp_camera_get_summary(camera, context)
    error = gp_camera_exit(camera, context)
    return text.text
예제 #3
0
def initCamera():
    global camera
    global context
    print("Init camera")
    # SLR Setup
    # GPhoto init / testing
    context = gp.gp_context_new()
    error, camera = gp.gp_camera_new()
    error = gp.gp_camera_init(camera, context)
    error, text = gp.gp_camera_get_summary(camera, context)
    #print('Summary')
    #print('=======')
    #print(text.text)

    # required configuration will depend on camera type!
    print('Checking camera config')
    config = gp.check_result(gp.gp_camera_get_config(camera))
    OK, image_format = gp.gp_widget_get_child_by_name(config, 'imageformat')
    if OK >= gp.GP_OK:
        value = gp.check_result(gp.gp_widget_get_value(image_format))
        if 'raw' in value.lower():
            print('Cannot preview raw images')
    # find the capture size class config item
    OK, capture_size_class = gp.gp_widget_get_child_by_name(
        config, 'capturesizeclass')
    if OK >= gp.GP_OK:
        value = gp.check_result(gp.gp_widget_get_choice(capture_size_class, 2))
        gp.check_result(gp.gp_widget_set_value(capture_size_class, value))
        gp.check_result(gp.gp_camera_set_config(camera, config))
예제 #4
0
 def statusHelper(self):
     with CameraControl.lock:
         global camera
         if (camera is not None):
             error, text = gp.gp_camera_get_summary(camera, context)
             #print(text.text)
             self.emit("camera_status", json.dumps(text.text))
def main():
    logging.basicConfig(
        format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING)
    callback_obj = gp.check_result(gp.use_python_logging())
    camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera))
    text = gp.check_result(gp.gp_camera_get_summary(camera))
    print('Summary')
    print('=======')
    print(text.text)
    print('Abilities')
    print('=========')
    abilities = gp.check_result(gp.gp_camera_get_abilities(camera))
    print('model:', abilities.model)
    print('status:', abilities.status)
    print('port:', abilities.port)
    print('speed:', abilities.speed)
    print('operations:', abilities.operations)
    print('file_operations:', abilities.file_operations)
    print('folder_operations:', abilities.folder_operations)
    print('usb_vendor:', abilities.usb_vendor)
    print('usb_product:', abilities.usb_product)
    print('usb_class:', abilities.usb_class)
    print('usb_subclass:', abilities.usb_subclass)
    print('usb_protocol:', abilities.usb_protocol)
    print('library:', abilities.library)
    print('id:', abilities.id)
    print('device_type:', abilities.device_type)
    gp.check_result(gp.gp_camera_exit(camera))
    return 0
예제 #6
0
    def __init__(self, resolution=(320, 240), framerate=32, **kwargs):
        print("Init camera")
        # SLR Setup
        self.shotRequested = False
        # GPhoto init / testing
        self.context = gp.gp_context_new()
        self.error, self.camera = gp.gp_camera_new()
        self.error = gp.gp_camera_init(self.camera, self.context)
        self.error, self.text = gp.gp_camera_get_summary(
            self.camera, self.context)

        # required configuration will depend on camera type!
        print('Checking camera config')
        self.config = gp.check_result(gp.gp_camera_get_config(self.camera))
        OK, image_format = gp.gp_widget_get_child_by_name(
            self.config, 'imageformat')
        if OK >= gp.GP_OK:
            value = gp.check_result(gp.gp_widget_get_value(image_format))
            if 'raw' in value.lower():
                print('Cannot preview raw images')
        # find the capture size class config item
        OK, capture_size_class = gp.gp_widget_get_child_by_name(
            self.config, 'capturesizeclass')
        if OK >= gp.GP_OK:
            value = gp.check_result(
                gp.gp_widget_get_choice(capture_size_class, 2))
            gp.check_result(gp.gp_widget_set_value(capture_size_class, value))
            gp.check_result(gp.gp_camera_set_config(self.camera, config))

        self.frame = None
        self.shot = None
        self.stopped = False
예제 #7
0
def test_camera():
    global camera, context, config, camera_config_name, camera_config
    print("Testing Camera")
    logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s',
                        level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    context = gp.gp_context_new()
    camera_list = []
    for name, addr in context.camera_autodetect():
        camera_list.append((name, addr))
    if not camera_list:
        print('No camera detected')
        return 1
    camera_list.sort(key=lambda x: x[0])
    name, addr = camera_list[0]
    camera = gp.Camera()
    #camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera, context))
    config = gp.check_result(gp.gp_camera_get_config(camera, context))
    text = gp.check_result(gp.gp_camera_get_summary(camera, context))
    print('Summary')
    print('=======')
    print(text.text)
    print('Abilities')
    print('=========')
    abilities = gp.check_result(gp.gp_camera_get_abilities(camera))
    print('model:', abilities.model)
    print('status:', abilities.status)
    print('port:', abilities.port)
    print('speed:', abilities.speed)
    print('operations:', abilities.operations)
    print('file_operations:', abilities.file_operations)
    print('folder_operations:', abilities.folder_operations)
    print('usb_vendor:', abilities.usb_vendor)
    print('usb_product:', abilities.usb_product)
    print('usb_class:', abilities.usb_class)
    print('usb_subclass:', abilities.usb_subclass)
    print('usb_protocol:', abilities.usb_protocol)
    print('library:', abilities.library)
    print('id:', abilities.id)
    print('device_type:', abilities.device_type)
    child_count = gp.check_result(gp.gp_widget_count_children(config))
    if child_count < 1:
        return
    tabs = None
    for n in range(child_count):
        child = gp.check_result(gp.gp_widget_get_child(config, n))
        camera_config.append(getConfig(child))
        label = gp.check_result(gp.gp_widget_get_label(child))
        camera_config_name.append(label)
        print('!!!!!!! CONFIG ', child, label)
    name = gp.check_result(gp.gp_widget_get_name(child))
    gp.check_result(gp.gp_camera_exit(camera, context))
    return 0
예제 #8
0
def setup():
    """
    Attempt to attach to a gphoto device and grab the camera and context. Return the results.
    """
    logging.basicConfig(format="%(levelname)s: %(name)s: %(message)s", level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    context = gp.gp_context_new()
    camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera, context))
    text = gp.check_result(gp.gp_camera_get_summary(camera, context))
    print text.text
    return camera, context
예제 #9
0
def main():
    logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s',
                        level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    context = gp.gp_context_new()
    camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera, context))
    text = gp.check_result(gp.gp_camera_get_summary(camera, context))
    print('Summary')
    print('=======')
    print(text.text)
    gp.check_result(gp.gp_camera_exit(camera, context))
    return 0
def init_camera(**kwd_args):

    context = gp.gp_context_new()
    error, camera = gp.gp_camera_new()
    error = gp.gp_camera_init(camera, context)

    if DEBUG:
        error, summary = gp.gp_camera_get_summary(camera, context)
        print('Summary', file=sys.stderr)
        print('=======', file=sys.stderr)
        print(summary.text, file=sys.stderr)

    return camera
예제 #11
0
def setup():
    """
    Attempt to attach to a gphoto device and grab the camera and context. Return the results.
    """
    logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s',
                        level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    context = gp.gp_context_new()
    camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera, context))
    text = gp.check_result(gp.gp_camera_get_summary(camera, context))
    print text.text
    return camera, context
예제 #12
0
def main():
    logging.basicConfig(
        format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    context = gp.gp_context_new()
    camera = gp.check_result(gp.gp_camera_new())
    gp.check_result(gp.gp_camera_init(camera, context))
    text = gp.check_result(gp.gp_camera_get_summary(camera, context))
    print('Summary')
    print('=======')
    print(text.text)
    gp.check_result(gp.gp_camera_exit(camera, context))
    return 0
예제 #13
0
    def get_summary(self):
        """
        Get gphoto2 summary
        :return: json_data
        """
        text = gp.check_result(
            gp.gp_camera_get_summary(self.camera, self.context))
        content = str(text)

        search_text = {
            'manufacturer': 'Manufacturer: (.+)?',
            'model': 'Model: (.+)?',
            'version': 'Version: (.+)?',
            'serial_number': 'Serial Number: (.+)?',
            'free_space_sd_card': 'Free Space.+:(.+)?',
            'current_focal_length': 'Focal Length.+? value:(.+)?\(',
            'focus_mode': 'Focus Metering Mode.+? value:(.+)?\(',
            'exposure_time': 'Exposure Time.+? value:(.+)?\(',
            'exposure_program_mode': 'Exposure Program Mode.+? value:(.+)?\(',
            'jpeg_compression_settings':
            'Compression Setting.+? value:(.+)?\(',
            'white_balance': 'White Balance.+? value:(.+)?\(',
            'f_number': 'F-Number.+? value: f/(.+)?\(',
            'exposure_metering_mode':
            'Exposure Metering Mode.+? value:(.+)?\(',
            'flash_mode': 'Flash Mode.+? value:(.+)?\(',
            'exposure_compensation':
            'Exposure Bias Compensation.+? value: ([-+]?\d+\.\d+)?.+?\(',
            'still_capture_mode': 'Still Capture Mode.+? value:(.+)?\(',
            'auto_iso': 'Auto ISO.+? value:(.+)?\(',
            'iso': 'Exposure Index.+? value: ISO(.+)?\(',
            'long_exposure_noise_reduction':
            'Long Exposure Noise Reduction.+? value:(.+)?\(',
            'autofocus_mode': 'Autofocus Mode.+? value:(.+)?\(',
            'af_assist_lamp': 'AF Assist Lamp.+? value:(.+)?\(',
            'iso_auto_high_limit': 'ISO Auto High Limit.+? value:(.+)?\('
        }

        search_result = {}
        for tag in search_text:
            search_result[tag] = ''
            try:
                search_result[tag] = re.search(search_text[tag],
                                               content).group(1).strip()
            except Exception as e:
                logger.debug('exception: {}'.format(e))
                pass

        return [search_result]
예제 #14
0
def init():
    context = gp.gp_context_new()
    error, file = gp.gp_file_new()
    error, camera = gp.gp_camera_new()
    error = gp.gp_camera_init(camera, context)
    error, text = gp.gp_camera_get_summary(camera, context)

    gp.gp_camera_capture(camera, 0, context)
    print('Summary')
    print('=======')
    print(text.text)
    print(gp.gp_result_as_string(error))

    print("start")
    return camera, context
예제 #15
0
 def __init_camera(self):
     error, self.__camera = gp.gp_camera_new()
     self.__context = gp.gp_context_new()
     error = gp.gp_camera_init(self.__camera, self.__context)
     error, text = gp.gp_camera_get_summary(self.__camera, self.__context)
     #print('Summary')
     #('=======')
     #print(text.text)
     self.__config = gp.check_result(gp.gp_camera_get_config(self.__camera, self.__context))
     self.__config_dict = OrderedDict()
     self.__walk_config(self.__config,self.__config_dict)
     self.print_settings()
     self.__watcher = QtCore.QFileSystemWatcher([self.__cfg_file_path], self)
     self.__watcher.fileChanged.connect(self.load_settings)
     self.load_settings(self.__cfg_file_path)
예제 #16
0
    def connect(self):
        self.context = gp.gp_context_new()
        print self.context
        self.camera = gp.check_result(gp.gp_camera_new())
        print self.camera
        gp.check_result(gp.gp_camera_init(self.camera, self.context))
        text = gp.check_result(gp.gp_camera_get_summary(self.camera, self.context))
        print('Summary')
        print('=======')
        print(text.text)
        
        print('Abilities')
        print('=========')
        abilities = gp.check_result(gp.gp_camera_get_abilities(self.camera))
        print('model:', abilities.model)
        print('status:', abilities.status)
        print('port:', abilities.port)
        print('speed:', abilities.speed)
        print('operations:', abilities.operations)
        print('file_operations:', abilities.file_operations)
        print('folder_operations:', abilities.folder_operations)
        print('usb_vendor:', abilities.usb_vendor)
        print('usb_product:', abilities.usb_product)
        print('usb_class:', abilities.usb_class)
        print('usb_subclass:', abilities.usb_subclass)
        print('usb_protocol:', abilities.usb_protocol)
        print('library:', abilities.library)
        print('id:', abilities.id)
        print('device_type:', abilities.device_type)
        print "--------------"
        print abilities
        

        rospy.set_param('AROM_camera/%s/model' %(self.name), abilities.model)
        rospy.set_param('AROM_camera/%s/config' %(self.name),
            {'name': self.arg['name'],
             'civil_name': self.arg['civil_name'],
             'driver': self.arg['driver'],
             'model': abilities.model,
             '#main':{
                        '@capture': {'type': 'button', 'msg_name': 'capture'},
                        '@Shutter_speed': {'type': 'select', 'msg_name': 'shutter_speed', 'value': {'0': "1/4000", '1': "1/1000", '2': "1/800"}},
                        '@ISO': {'type': 'select', 'msg_name': 'gain', 'value': {'0': "AUTO", '1': "100", '2': "200"}},
                        '@ISO': {'type': 'select', 'msg_name': 'gain', 'value': {'0': "AUTO", '1': "100", '2': "200"}}
                    }
            }
        )
    def get_summary(self):
        """
        Get gphoto2 summary
        :return: json_data
        """
        text = gp.check_result(gp.gp_camera_get_summary(self.camera, self.context))
        content = str(text)

        search_text = {
            'manufacturer': 'Manufacturer: (.+)?',
            'model': 'Model: (.+)?',
            'version': 'Version: (.+)?',
            'serial_number': 'Serial Number: (.+)?',
            'free_space_sd_card': 'Free Space.+:(.+)?',
            'current_focal_length': 'Focal Length.+? value:(.+)?\(',
            'focus_mode': 'Focus Metering Mode.+? value:(.+)?\(',
            'exposure_time': 'Exposure Time.+? value:(.+)?\(',
            'exposure_program_mode': 'Exposure Program Mode.+? value:(.+)?\(',
            'jpeg_compression_settings': 'Compression Setting.+? value:(.+)?\(',
            'white_balance': 'White Balance.+? value:(.+)?\(',
            'f_number': 'F-Number.+? value: f/(.+)?\(',
            'exposure_metering_mode': 'Exposure Metering Mode.+? value:(.+)?\(',
            'flash_mode': 'Flash Mode.+? value:(.+)?\(',
            'exposure_compensation': 'Exposure Bias Compensation.+? value: ([-+]?\d+\.\d+)?.+?\(',
            'still_capture_mode': 'Still Capture Mode.+? value:(.+)?\(',
            'auto_iso': 'Auto ISO.+? value:(.+)?\(',
            'iso': 'Exposure Index.+? value: ISO(.+)?\(',
            'long_exposure_noise_reduction': 'Long Exposure Noise Reduction.+? value:(.+)?\(',
            'autofocus_mode': 'Autofocus Mode.+? value:(.+)?\(',
            'af_assist_lamp': 'AF Assist Lamp.+? value:(.+)?\(',
            'iso_auto_high_limit': 'ISO Auto High Limit.+? value:(.+)?\('
        }

        search_result = {}
        for tag in search_text:
            search_result[tag] = ''
            try:
                search_result[tag] = re.search(search_text[tag], content).group(1).strip()
            except Exception as e:
                logger.debug('exception: {}'.format(e))
                pass

        return [search_result]
예제 #18
0
    def __init__(self,name='',pylog=True, summary=False):

        if pylog:
            gp.use_python_logging(mapping={
                gp.GP_LOG_ERROR   : logging.INFO,
                gp.GP_LOG_DEBUG   : logging.DEBUG,
                gp.GP_LOG_VERBOSE : logging.DEBUG - 3,
                gp.GP_LOG_DATA    : logging.DEBUG - 6})

        self.context = gp.gp_context_new()
        error, self.camera = gp.gp_camera_new()
        if error != 0:
            print('init scanner: cannot allocate ressources!')
            self.error = error
            return

        self.connect()
        error, text = gp.gp_camera_get_summary(self.camera, self.context)
        if error != 0:
            print('init scanner: cannot get camera summary!')
            self.error = error
            return 
        
        self.text = text.text
        if summary:
            print('init summary:')
            print(text.text)
            print('')
            
        error = self.get_config()
        if error !=0:
            print('init scanner: cannot get camera config!')
            self.error = error
            return
        else:
            self.error = 0
            self.get_exposure_bias()
            self.get_exposure_time()
            self.get_iso()

        self.deconnect()
예제 #19
0
    def connect(self):
        gp.gp_camera_exit(self.camera, self.context)

        logger.debug("Trying to connect to the camera...")
        for ic in range(1000):
            logger.debug("   Attempt %i/10" % (ic+1))
            time.sleep(0.2)
            error = gp.gp_camera_init(self.camera, self.context)
            if error == gp.GP_OK:
                # operation completed successfully so exit loop
                self.camera_description = str(gp.check_result(gp.gp_camera_get_summary(self.camera, self.context)))
                logger.debug("Camera connected")
                return True

            # no self.camera, try again in 2 seconds
            gp.gp_camera_exit(self.camera, self.context)

        # raise gp.GPhoto2Error(error)
        logger.debug("Failed to connect camera")
        time.sleep(0.5)
        return False
예제 #20
0
def waitForCamera(context):
  showText(AREA_PREVIEW,"Warte auf Kamera ")
  pygame.display.flip()
  camera = gp.check_result(gp.gp_camera_new())
  err=gp.gp_camera_init(camera, context)
  if (err < gp.GP_OK):
    if err != gp.GP_ERROR_MODEL_NOT_FOUND:
        # some other error we can't handle here
        raise gp.GPhoto2Error(err)
    return
  # required configuration will depend on camera type!
  print('Checking camera config')
  # get configuration tree
  config = gp.check_result(gp.gp_camera_get_config(camera, context))
  # find the image format config item
  OK, image_format = gp.gp_widget_get_child_by_name(config, 'imageformat')
  if OK >= gp.GP_OK:
      # get current setting
      value = gp.check_result(gp.gp_widget_get_value(image_format))
      # make sure it's not raw
      if 'raw' in value.lower():
          raise gp.GPhoto2Error('Cannot preview raw images')
  # find the capture size class config item
  # need to set this on my Canon 350d to get preview to work at all
  OK, capture_size_class = gp.gp_widget_get_child_by_name(
      config, 'capturesizeclass')
  if OK >= gp.GP_OK:
      # set value
      value = gp.check_result(gp.gp_widget_get_choice(capture_size_class, 2))
      gp.check_result(gp.gp_widget_set_value(capture_size_class, value))
      # set config
      gp.check_result(gp.gp_camera_set_config(camera, config, context))
  OK,txt=gp.gp_camera_get_summary(camera,context)
  infod=txToDict(txt.text)
  showText(AREA_PREVIEW,infod.get('Model'))
  info.camera=infod.get('Model')
  pygame.display.flip()
  return camera
예제 #21
0
def waitForCamera(context):
    showText(AREA_PREVIEW, "Warte auf Kamera ")
    pygame.display.flip()
    camera = gp.check_result(gp.gp_camera_new())
    err = gp.gp_camera_init(camera, context)
    if (err < gp.GP_OK):
        if err != gp.GP_ERROR_MODEL_NOT_FOUND:
            # some other error we can't handle here
            raise gp.GPhoto2Error(err)
        return
    # required configuration will depend on camera type!
    print('Checking camera config')
    # get configuration tree
    config = gp.check_result(gp.gp_camera_get_config(camera, context))
    # find the image format config item
    OK, image_format = gp.gp_widget_get_child_by_name(config, 'imageformat')
    if OK >= gp.GP_OK:
        # get current setting
        value = gp.check_result(gp.gp_widget_get_value(image_format))
        # make sure it's not raw
        if 'raw' in value.lower():
            raise gp.GPhoto2Error('Cannot preview raw images')
    # find the capture size class config item
    # need to set this on my Canon 350d to get preview to work at all
    OK, capture_size_class = gp.gp_widget_get_child_by_name(
        config, 'capturesizeclass')
    if OK >= gp.GP_OK:
        # set value
        value = gp.check_result(gp.gp_widget_get_choice(capture_size_class, 2))
        gp.check_result(gp.gp_widget_set_value(capture_size_class, value))
        # set config
        gp.check_result(gp.gp_camera_set_config(camera, config, context))
    OK, txt = gp.gp_camera_get_summary(camera, context)
    infod = txToDict(txt.text)
    showText(AREA_PREVIEW, infod.get('Model'))
    info.camera = infod.get('Model')
    pygame.display.flip()
    return camera
예제 #22
0
import gphoto2 as gp

context = gp.gp_context_new()

error, camera = gp.gp_camera_new()

error = gp.gp_camera_init(camera, context)

error, text = gp.gp_camera_get_summary(camera, context)

print('Summary')
print('=======')
print(text.text)

error = gp.gp_camera_exit(camera, context)
예제 #23
0
 def __init__(self):
     gp.check_result(gp.use_python_logging())
     camera = gp.check_result(gp.gp_camera_new())
     gp.check_result(gp.gp_camera_init(camera))
     L.info(gp.check_result(gp.gp_camera_get_summary(camera)))
     self.camera = camera