Exemplo n.º 1
0
 def init_gcam(self, index, name, addr):
     self.camera = gp.Camera()
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(addr)
     self.camera.set_port_info(port_info_list[idx])
     self.camera.init()
Exemplo n.º 2
0
def detectCamera():
    print("Camera::detectCamera()")
    
    try:
        cams = list()
        
        # Get the context of the camera.
        context = gp.Context()
        
        if hasattr(gp, 'gp_camera_autodetect'):
            # gphoto2 version 2.5+
            cameras = context.camera_autodetect()
        else:
            port_info_list = gp.PortInfoList()
            port_info_list.load()
            abilities_list = gp.CameraAbilitiesList()
            abilities_list.load(context)
            cameras = abilities_list.detect(port_info_list, context)
        
        for name, port in cameras:
            cams.append({"name" : name, "port" : port})
            
        return(cams)
    except Exception as e:
        print("Error occured in Camera::detectCamera()")
        print(str(e))
Exemplo n.º 3
0
    def __init__(self, index):
        """
        Konstruktor der Klasse Camera.

        Beendet alle laufenden gphoto2 Prozesse.
        Nimmt einen Index entgegen und erstellt mit diesem aus der Liste der verfügbaren Kameras die ausgewählte Kamera.
        Weist die Kamera zum Schluss an, die aufgenommen Bilder auf der SD-Karte zu speichern.

        :param index: Index der ausgewählten Kamera.
        :rtype: int
        """

        self.index = index                                                                                              # Speichere den übergebenen Index
        Camera.kill_gphoto_process()                                                                                    # Beende alle laufenden gphoto2 Prozesse

        self.name, self.addr = Camera.available_cameras[index]                                                          # Entnehme den Namen und den Port der gewählten Kamera aus der Liste der verfügbaren Kameras
        self.camera = gp.Camera()                                                                                       # Erstelle ein neues Objekt vom Typ "gp.Camera"

        port_info_list = gp.PortInfoList()                                                                              # Lese die verfügbaren Ports (Usb) aus
        port_info_list.load()                                                                                           # Lade die Liste der Usb-Ports
        idx = port_info_list.lookup_path(self.addr)                                                                     # Lade den Pfad der Kamera aus der Liste
        self.camera.set_port_info(port_info_list[idx])                                                                  # Setze den Port des erstellen Kamera-Objektes auf den geladenen Pfad
        self.camera.init()                                                                                              # Initialisiere die Kamera

        self.set_capture_target()                                                                                       # Weise die Kamera an, Bilder auf der SD KArte zu speichern
        print("Kamera initialisiert")
Exemplo n.º 4
0
 def camera_find_by_serialnumber(self, serialnumber):
     logging.info(
         'camera_find_by_serialnumber: ++ sn = {}'.format(serialnumber))
     found = False
     ret = None
     try:
         cnt, cameras = gp.gp_camera_autodetect()
         for i in range(cnt):
             if len(cameras[i]) == 2:
                 addr = cameras[i][1]
                 port_info_list = gp.PortInfoList()
                 port_info_list.load()
                 idx = port_info_list.lookup_path(addr)
                 c = gp.Camera()
                 c.set_port_info(port_info_list[idx])
                 c.init()
                 config = c.get_config()
                 OK, sn = gp.gp_widget_get_child_by_name(
                     config, 'serialnumber')
                 if OK >= gp.GP_OK:
                     sn_text = sn.get_value()
                     if serialnumber == sn_text[-len(serialnumber):]:
                         found = True
                         ret = c
                 if not found:
                     c.exit()
             if found:
                 break
     except:
         pass
     logging.info('camera_find_by_serialnumber: -- ret={}'.format(ret))
     return ret
Exemplo n.º 5
0
def get_camera(serial, serial_to_address=None):
    if serial_to_address is None:
        serial_to_address = list_camera_serial_numbers()

    if len(serial_to_address) == 0:
        raise ValueError('No cameras!')
    if serial == '':
        print('Using first attached camera!')
        serial = serial_to_address.keys()[0]

    print('')
    print('===============')
    print('Selected camera:')
    print('===============')
    print('Serial Number: ' + serial)
    print('===============')
    print('')

    addr = serial_to_address[serial]
    camera = gp.Camera()
    port_info_list = gp.PortInfoList()
    port_info_list.load()
    idx = port_info_list.lookup_path(addr)
    camera.set_port_info(port_info_list[idx])
    camera.init()
    return camera
    def detect_all_cameras(self):
        self.disconnect_all()

        with self._gp_lock:
            cameras_name_and_port = gp.check_result(gp.gp_camera_autodetect())

            # Search ports for camera port name
            port_info_list = gp.PortInfoList()
            port_info_list.load()

            for name, port in cameras_name_and_port:
                gp_camera = gp.Camera()
                idx = port_info_list.lookup_path(port)
                port_info = port_info_list[idx]
                gp_camera.set_port_info(port_info)

                try:
                    camera = GpCamera(name=name,
                                      port=port,
                                      gp_camera=gp_camera,
                                      lock=self.sync_lock)

                    with self._cameras_dict_lock:
                        self._cameras_dict[camera.id] = camera

                except Exception as e:
                    print('Detect all: {0}'.format(e))
Exemplo n.º 7
0
    def start(self):
        right = True
        autodetected = gp.check_result(gp.gp_camera_autodetect())
        for i, cam in enumerate(autodetected):
            name, addr = cam
            if i == 0:
                right = get_bool(name + " connect in " + addr +
                                 " is Right cam ? (show left page) ")
            else:
                right = not self.camera_list[i - 1]["right"]
            # camera_list.append((name, addr))camera = gp.Camera()
            # search ports for camera port name
            camera = gp.Camera()
            port_info_list = gp.PortInfoList()
            port_info_list.load()
            idx = port_info_list.lookup_path(addr)
            camera.set_port_info(port_info_list[idx])
            camera.init()
            self.camera_list.append({
                "gp": camera,
                "name": name,
                "right": right
            })

        if not self.camera_list:
            print('No camera detected')
        else:
            canvas = np.zeros((512, 512, 3), np.uint8)
            while self.scanning:
                cv2.imshow('canvas', canvas)
                self.key_event(cv2.waitKey(100))
Exemplo n.º 8
0
def list_camera_serial_numbers():
    camera_list = get_list_of_availale_cameras()
    if len(camera_list) == 0:
        return

    addresses = [camera_info[1] for camera_info in camera_list]
    camera_types = [camera_info[0] for camera_info in camera_list]

    serial_numbers = []
    serial_to_address = {}
    for i, addr in enumerate(addresses):
        camera = gp.Camera()
        port_info_list = gp.PortInfoList()
        port_info_list.load()
        idx = port_info_list.lookup_path(addr)
        camera.set_port_info(port_info_list[idx])
        camera.init()
        txt = str(camera.get_summary())
        serial = txt.split('Serial Number: ')[1].split('\n')[0]
        serial_numbers.append(serial)
        serial_to_address[serial_numbers[i]] = addresses[i]

    print('Attached Cameras:')
    print('================')
    for i in range(len(addresses)):
        print('Camera ' + str(i + 1))
        print('      Serial number: ' + serial_numbers[i])
        print('      Make and Model: ' + camera_types[i])
        print('      USB Address: ' + addresses[i])

    return serial_to_address
Exemplo n.º 9
0
def init_camera(addr):
    camera = gp.Camera()
    # search ports for camera port name
    port_info_list = gp.PortInfoList()
    port_info_list.load()
    idx = port_info_list.lookup_path(addr)
    camera.set_port_info(port_info_list[idx])
    camera.init()
    return camera
Exemplo n.º 10
0
 def connect(self, camera):
     name, addr = camera
     self.camera = gp.Camera()
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(addr)
     self.camera.set_port_info(port_info_list[idx])
     self.camera.init(self.context)
     return self.camera
Exemplo n.º 11
0
def camera_control_util(addr):
    """
	A utility that summarizes the basic parts of a function 
	that you need in order to select and send to a Theta sending a command in Python-gPhoto2.

	
	Parameters
	----------
	addr : char
		ID for connected THETA

	Returns
	-------
	camera : Camera object
	parent_widget : camera widget object

	--------
	Japanese
	--------
	Python-gPhoto2において
	コマンドを送信するThetaを選択して送信する必要がある関数の
	基本部分をまるっとまとめたユーティリティ。

	Parameters
	----------
	addr : char
		接続されているThetaのID

	Returns
	-------
	camera : Camera object
	parent_widget : camera widget object



	"""

    camera = gp.Camera()
    # Search for a port by camera port name (?)
    # カメラのポート名でポートを検索(?)

    port_info_list = gp.PortInfoList()
    port_info_list.load()

    idx = port_info_list.lookup_path(addr)
    camera.set_port_info(port_info_list[idx])
    camera.init()

    try:
        parent_widget = camera.get_config()
    except gp.GPhoto2Error:
        # Just in case, the process of making an exception remains the same. Not sure if it makes sense
        # 念の為例外を立てる処理はそのまま。意味があるかは不明
        raise RuntimeError("Unable to connect to Camera")

    return camera, parent_widget
Exemplo n.º 12
0
 def connect_camera(self, port):
     self.camera = gp.Camera()
     # Search ports for camera port name
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(port)
     self.camera.set_port_info(port_info_list[idx])
     self.camera.init()
     # Get camera configuration
     self.config = self.camera.get_config()
Exemplo n.º 13
0
def get_gp_camera_proxy(port=None):
    """Return camera proxy if a gPhoto2 compatible camera is found
    else return None.

    .. note:: try to kill any process using gPhoto2 as it may block camera access.

    :param port: look on given port number
    :type port: str
    """
    if not gp:
        return None  # gPhoto2 is not installed

    pkill('*gphoto2*')
    if hasattr(gp, 'gp_camera_autodetect'):
        # gPhoto2 version 2.5+
        cameras = gp.check_result(gp.gp_camera_autodetect())
    else:
        port_info_list = gp.PortInfoList()
        port_info_list.load()
        abilities_list = gp.CameraAbilitiesList()
        abilities_list.load()
        cameras = abilities_list.detect(port_info_list)
    if cameras:
        LOGGER.debug("Found gPhoto2 cameras on ports: '%s'",
                     "' / '".join([p for _, p in cameras]))
        # Initialize first camera proxy and return it
        camera = gp.Camera()
        if port is not None:
            port_info_list = gp.PortInfoList()
            port_info_list.load()
            idx = port_info_list.lookup_path(port)
            camera.set_port_info(port_info_list[idx])

        try:
            camera.init()
            return camera
        except gp.GPhoto2Error as ex:
            LOGGER.warning("Could not connect gPhoto2 camera: %s", ex)

    return None
Exemplo n.º 14
0
def camera_connected():
    """Return the list of connected camera compatible with gPhoto2.
    """
    if hasattr(gp, 'gp_camera_autodetect'):
        # gPhoto2 version 2.5+
        cameras = gp.check_result(gp.gp_camera_autodetect())
    else:
        port_info_list = gp.PortInfoList()
        port_info_list.load()
        abilities_list = gp.CameraAbilitiesList()
        abilities_list.load()
        cameras = abilities_list.detect(port_info_list)
    return cameras
Exemplo n.º 15
0
    def _get_available_cameras_raw():
        """
        Use gphoto2 autodetect functionality to get list of available cameras

        :return: list of cameras
        :rtype: gphoto2.CameraList of values like "['Canon EOS 1000D', 'usb:002,007']"
        """
        port_info_list = gp.PortInfoList()
        port_info_list.load()
        abilities_list = gp.CameraAbilitiesList()
        abilities_list.load()
        cameras = abilities_list.detect(port_info_list)
        return cameras
Exemplo n.º 16
0
    def get_cameras(self):
        if self.cameras is None:
            self.cameras = {}
            has_attached_cameras = False

            for index, (name, addr) in enumerate(
                    gp.check_result(gp.gp_camera_autodetect())):
                try:
                    has_attached_cameras = True
                    print('{:d}: {:s} {:s}'.format(index, addr, name))
                    context = gp.Context()
                    camera = gp.Camera()

                    port_info_list = gp.PortInfoList()
                    port_info_list.load()
                    idx = port_info_list.lookup_path(addr)
                    camera.set_port_info(port_info_list[idx])
                    camera.init(context)

                    config = camera.get_config(context)
                    serial = config.get_child_by_name('eosserialnumber')
                    self.cameras[serial.get_value()] = (camera, {
                        'port_index': idx
                    })

                    try:
                        output = config.get_child_by_name('output')
                        output.set_value(output.get_choice(0))

                        vf = config.get_child_by_name('viewfinder')
                        vf.set_value(0)

                        camera.set_config(config)
                    except Exception as e:
                        print(e)

                except Exception as e:
                    print(e)

            if has_attached_cameras == False:
                print('No Cameras Detected')
                Qtw.QMessageBox.critical(
                    None, 'Error Detecting Cameras',
                    'No cameras were detected. Confirm that 4 cameras are attached via USB. Go into config and "Refresh Camera List"'
                )
            else:
                Qtw.QMessageBox.about(
                    None, 'Cameras Detected',
                    '{} camera(s) attached. If that is not correct confirm they are connected to USB then go into config and "Refresh Camera List"'
                    .format(len(self.cameras)))
        return self.cameras
Exemplo n.º 17
0
 def select_camera(self, port_name):
     # free any existing camera
     if self.camera:
         self.camera.exit(self.context)
         self.camera = None
     # initialise camera
     self.camera = gp.Camera()
     # search ports for camera port name
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(port_name)
     self.camera.set_port_info(port_info_list[idx])
     self.camera.init(self.context)
     return CameraSource(self.camera, self.context)
Exemplo n.º 18
0
def main():
    logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s',
                        level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    context = gp.Context()
    # make a list of all available cameras
    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])
    # ask user to choose one
    for index, (name, addr) in enumerate(camera_list):
        print('{:d}:  {:s}  {:s}'.format(index, addr, name))
    if six.PY3:
        choice = input('Please input number of chosen camera: ')
    else:
        choice = raw_input('Please input number of chosen camera: ')
    try:
        choice = int(choice)
    except ValueError:
        print('Integer values only!')
        return 2
    if choice < 0 or choice >= len(camera_list):
        print('Number out of range')
        return 3
    # initialise chosen camera
    name, addr = camera_list[choice]
    camera = gp.Camera()
    # search ports for camera port name
    port_info_list = gp.PortInfoList()
    port_info_list.load()
    idx = port_info_list.lookup_path(addr)
    camera.set_port_info(port_info_list[idx])
    camera.init(context)
    text = camera.get_summary(context)
    print('Summary')
    print('=======')
    print(str(text))
    try:
        text = camera.get_manual(context)
        print('Manual')
        print('=======')
        print(str(text))
    except Exception as ex:
        print(str(ex))
    camera.exit(context)
    return 0
Exemplo n.º 19
0
 def session(self):
     # initialise camera
     camera = gp.Camera()
     # search ports for camera port name
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(self.port_name)
     camera.set_port_info(port_info_list[idx])
     camera.init()
     # check camera is the right model
     if camera.get_abilities().model != self.model:
         raise RuntimeError('Camera model mismatch')
     yield camera
     camera.exit()
Exemplo n.º 20
0
 def _select_camera(self, model, port_name) -> None:
     # Code from Jim Easterbrook's Photoini
     # initialise camera
     self.camera = gp.Camera()
     # search abilities for camera model
     abilities_list = gp.CameraAbilitiesList()
     abilities_list.load(self.context)
     idx = abilities_list.lookup_model(str(model))
     self.camera.set_abilities(abilities_list[idx])
     # search ports for camera port name
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(str(port_name))
     self.camera.set_port_info(port_info_list[idx])
Exemplo n.º 21
0
    def _get_camera_object_by_addr(camera_addr):
        """
        Get uninitialized Camera object, based on camera address.

        :param camera_addr: Address of the camera from PortInfoList. E.g. "usb:002,041".
        :type camera_addr: str
        :return: gphoto2.Camera
        """
        camera = ThreadsafeCameraObject()

        port_info_list = gp.PortInfoList()
        port_info_list.load()
        idx = port_info_list.lookup_path(camera_addr)
        camera.set_port_info(port_info_list[idx])
        return camera
Exemplo n.º 22
0
 def init_gcam(self, index, name, addr):
     self.camera = gp.Camera()
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(addr)
     self.camera.set_port_info(port_info_list[idx])
     try:
         self.camera.init(
         )  # prints: WARNING: gphoto2: (b'gp_context_error') b'Could not detect any camera' if logging set up
         self.hasCamInited = True
     except Exception as ex:
         self.hasCamInited = False
         lastException = ex
         logging.warning("No camera: {} {}; ".format(
             type(lastException).__name__, lastException.args))
Exemplo n.º 23
0
 def __init__(self, model, port_name):
     self.model = model
     self.port_name = port_name
     self.context = gp.Context()
     # initialise camera
     self.camera = gp.Camera()
     # search ports for camera port name
     port_info_list = gp.PortInfoList()
     port_info_list.load()
     idx = port_info_list.lookup_path(self.port_name)
     self.camera.set_port_info(port_info_list[idx])
     self.camera.init(self.context)
     # check camera is the right model
     if self.camera.get_abilities().model != self.model:
         raise RuntimeError('Camera model mismatch')
Exemplo n.º 24
0
 def __init__(self, root=None, addr=None, logger=logger):
     super().__init__()
     self._root = root  # root folder where to store photos from this specific camera instance
     self.src_fn = None  # path to currently made photo (source) inside the camera
     self.dst_fn = None  # path to photo (destination) on drive
     self.logger = logger
     self.id = None  # TODO: give a uniue ID to each camera (once CameraRig is defined, complete)
     self.name = None  # TODO: give a name to each camera (once CameraRig is defined, complete)
     if addr is not None:
         # access a specific camera if the address details are provided
         # get all accessible ports
         ports = gp.PortInfoList()
         ports.load()
         # find the port that's commensurate with the address of the camera
         idx = ports.lookup_path(addr)
         self.set_port_info(ports[idx])
Exemplo n.º 25
0
    def get_camera(self):
        self.logger.info("Getting camera list")
        camera_list = list(gp.Camera.autodetect())
        self.camera = gp.Camera()
        port_info_list = gp.PortInfoList()
        port_info_list.load()
        self.logger.debug("Excluding iPhones from the camera list")
        non_iphone = [x for x in camera_list if 'Apple' not in x[0]]
        if len(non_iphone) < 1:
            raise ValueError("No cameras attached")
        idx = port_info_list.lookup_path(non_iphone[0][1])

        self.camera.set_port_info(port_info_list[idx])
        self.logger.debug(f"Initializing camera {non_iphone[0]}")
        self.camera.init()
        self.logger.debug(f"Initialized camera {non_iphone[0]}")
Exemplo n.º 26
0
def gp_camera_connected():
    """Return True if a camera compatible with gPhoto2 is found.
    """
    if not gp:
        return False  # gPhoto2 is not installed
    if hasattr(gp, 'gp_camera_autodetect'):
        # gPhoto2 version 2.5+
        cameras = gp.check_result(gp.gp_camera_autodetect())
    else:
        port_info_list = gp.PortInfoList()
        port_info_list.load()
        abilities_list = gp.CameraAbilitiesList()
        abilities_list.load()
        cameras = abilities_list.detect(port_info_list)
    if cameras:
        return True

    return False
Exemplo n.º 27
0
 def set_datetime(self):
     for index, (name, addr) in enumerate(self.camera_list):
         camera = gp.Camera()
         port_info_list = gp.PortInfoList()
         port_info_list.load()
         idx = port_info_list.lookup_path(addr)
         camera.set_port_info(port_info_list[idx])
         camera.init()
         abilities = camera.get_abilities()
         config = camera.get_config()
         if self.gphoto_datetime(config, abilities.model, gp):
             camera.set_config(config)
             logging.debug("Synchronized datetime for : " +
                           '{:d}:  {:s}  {:s}'.format(index, addr, name))
         else:
             logging.warning('Could not set date & time for ' +
                             '{:d}:  {:s}  {:s}'.format(index, addr, name))
         camera.exit()
Exemplo n.º 28
0
def getCamera(cameraNumber=0):
    logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s',
                        level=logging.WARNING)
    gp.check_result(gp.use_python_logging())
    # make a list of all available cameras
    camera_list = []
    for name, addr in gp.check_result(gp.gp_camera_autodetect()):
        camera_list.append((name, addr))
    camera_list.sort(key=lambda x: x[0])

    if len(camera_list) == 0:
        print("No cameras found")
        return None

    if cameraNumber < 0 or cameraNumber >= len(camera_list):
        print('Camera out of range')
        return None
    # initialise chosen camera
    name, addr = camera_list[cameraNumber]
    camera = gp.Camera()
    # search ports for camera port name
    port_info_list = gp.PortInfoList()
    port_info_list.load()
    idx = port_info_list.lookup_path(addr)
    camera.set_port_info(port_info_list[idx])
    camera.init()

    config = gp.check_result(gp.gp_camera_get_config(camera))
    # 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))

    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))
    return camera
Exemplo n.º 29
0
    def detect_cameras(self):
        """ Detects the connected cameras and if the ownername matches
        with `LEFTNAME` or `RIGHTNAME`, it will be stored under the variable
        `cameras`
        """
        _cameras = self.context.camera_autodetect()
        msg = [(False, "None"), (False, "None")]
        if len(_cameras) == 0:
            raise Exception("Unable to find any camera")
        # Stores the left and right camera

        ports = gp.PortInfoList()
        ports.load()

        for index, (name, addr) in enumerate(_cameras):
            logger.debug("Count: {}, Name: {}, Addr: {}".format(
                index, name, addr))
            # Get the ports and search for the camera
            idx = ports.lookup_path(addr)
            try:
                camera = gp.Camera()
                camera.set_port_info(ports[idx])
                camera.init(self.context)
                # Check if the ownername matches to given values
                ownername = self._get_config("ownername", camera)
                abilities = gp.check_result(gp.gp_camera_get_abilities(camera))
            except gp.GPhoto2Error as error:
                logger.error(str(error))
            else:
                if ownername == self.LEFTNAME:
                    camera._camera_name = self.LEFTNAME
                    camera._camera_id = CameraID.LEFT
                    self.cameras[CameraID.LEFT] = camera
                    msg[CameraID.LEFT] = True, str(abilities.model)
                    logger.info("Connected: " + str(abilities.model))
                elif ownername == self.RIGHTNAME:
                    camera._camera_name = self.RIGHTNAME
                    camera._camera_id = CameraID.RIGHT
                    self.cameras[CameraID.RIGHT] = camera
                    msg[CameraID.RIGHT] = True, str(abilities.model)
                    logger.info("Connected: " + str(abilities.model))

        return self.connected, msg
Exemplo n.º 30
0
 def clear_photos_from_camera(self):
     cameraCounter = 1
     camera_list = []
     # Get list of all connected cameras
     for name, addr in gp.check_result(gp.gp_camera_autodetect()):
         camera_list.append((name, addr))
     if not camera_list:
         self.deletePhotosLabel.setText('No camera detected')
         return 1
     # Sort the camera list
     camera_list.sort(key=lambda x: x[0])
     for item in camera_list:
         cameraPercentage = int((cameraCounter / len(camera_list)) * 100)
         self.cameraProgressBarDelete.setValue(cameraPercentage)
         self.deletePhotosLabel.setText('Deleting from camera %i of %i' %
                                        (cameraCounter, len(camera_list)))
         # initialise camera
         name, addr = item
         camera = gp.Camera()
         # search ports for camera port name
         port_info_list = gp.PortInfoList()
         port_info_list.load()
         idx = port_info_list.lookup_path(addr)
         camera.set_port_info(port_info_list[idx])
         camera.init()
         # Get list of all files from the camera
         camera_files = self.list_camera_files(camera)
         if not camera_files:
             self.deletePhotosLabel.setText('No files found')
         # Deleting files
         counter = 1
         for path in camera_files:
             filePercentage = int((counter / len(camera_files)) * 100)
             self.fileProgressBarDelete.setValue(filePercentage)
             # Get folder and name from path
             folder, name = os.path.split(path)
             # Delete image from camera
             gp.check_result(gp.gp_camera_file_delete(camera, folder, name))
             counter += 1
         gp.check_result(gp.gp_camera_exit(camera))
         cameraCounter += 1
     self.deletePhotosLabel.setText('Deletion Completed')