def __init__(self, target_path: Path) -> None: self._target_path = target_path self._camera: gp.Camera = None self._new_file_detected = threading.Event() self._must_stop = threading.Event() self._camera_lock = threading.Lock() self._monitor_thread: Optional[threading.Thread] = None gp.use_python_logging()
def main(): # use Python logging logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) # get user value if len(sys.argv) != 2: print('One command line parameter required') return 1 try: value = int(sys.argv[1]) except: print('Integer parameter required') return 1 # open camera connection camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) # get configuration tree config = gp.check_result(gp.gp_camera_get_config(camera)) # find the capture target config item capture_target = gp.check_result( gp.gp_widget_get_child_by_name(config, 'capturetarget')) # check value in range count = gp.check_result(gp.gp_widget_count_choices(capture_target)) if value < 0 or value >= count: print('Parameter out of range') return 1 # set value value = gp.check_result(gp.gp_widget_get_choice(capture_target, value)) gp.check_result(gp.gp_widget_set_value(capture_target, value)) # set config gp.check_result(gp.gp_camera_set_config(camera, config)) # clean up gp.check_result(gp.gp_camera_exit(camera)) return 0
def main(): # use Python logging logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) # get user value if len(sys.argv) != 2: print('One command line parameter required') return 1 try: value = int(sys.argv[1]) except: print('Integer parameter required') return 1 # open camera connection camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) # get configuration tree config = gp.check_result(gp.gp_camera_get_config(camera)) # find the capture target config item capture_target = gp.check_result( gp.gp_widget_get_child_by_name(config, 'capturetarget')) # check value in range count = gp.check_result(gp.gp_widget_count_choices(capture_target)) if value < 0 or value >= count: print('Parameter out of range') return 1 # set value value = gp.check_result(gp.gp_widget_get_choice(capture_target, value)) gp.check_result(gp.gp_widget_set_value(capture_target, value)) # set config gp.check_result(gp.gp_camera_set_config(camera, config)) # clean up gp.check_result(gp.gp_camera_exit(camera)) return 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
def takeApicture(): logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) print('Capturing image') file_path = gp.check_result( gp.gp_camera_capture(camera, gp.GP_CAPTURE_IMAGE)) print('Camera file path: {0}/{1}'.format(file_path.folder, file_path.name)) curFilePath = os.path.dirname(os.path.realpath(__file__)) imgName = "Photomat_" + datetime.now().isoformat() + ".jpg" target = os.path.join(curFilePath, 'static/img', imgName) print('Copying image to', target) camera_file = gp.check_result( gp.gp_camera_file_get(camera, file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL)) gp.check_result(gp.gp_file_save(camera_file, target)) gp.check_result(gp.gp_camera_exit(camera)) data = {"response": "OK"} js = json.dumps(data) resp = Response(js, status=200, mimetype='application/json') return resp
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) print('Getting list of files') files = list_files(camera, context) if not files: print('No files found') return 1 path = files[0] print('Copying %s to memory' % path) folder, name = os.path.split(path) camera_file = gp.check_result(gp.gp_camera_file_get( camera, folder, name, gp.GP_FILE_TYPE_NORMAL, context)) data = gp.check_result(gp.gp_file_get_data_and_size(camera_file)) print(type(data), len(data)) if six.PY2: print(map(ord, data[0:10])) image = Image.open(StringIO.StringIO(data)) else: print(data[0:10]) image = Image.open(io.BytesIO(data)) image.show() print('After deleting camera_file') del camera_file print(type(data), len(data)) if six.PY2: print(map(ord, data[0:10])) else: print(data[0:10]) gp.check_result(gp.gp_camera_exit(camera, context)) return 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
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.Camera() camera.init() try: while True: print('Capturing image') file_path = camera.capture(gp.GP_CAPTURE_IMAGE) print(file_path.name) print('Camera file path: {0}/{1}'.format(file_path.folder, file_path.name)) target = os.path.join('/tmp', file_path.name) print('Copying image to', target) camera_file = camera.file_get(file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL) camera_file.save(target) print("Rename") new_name = "/tmp/capt" + time.strftime("%Y%m%d%H%M%S.jpg", time.gmtime()) os.rename(target, new_name) subprocess.call(['xdg-open', new_name]) time.sleep(4) except KeyboardInterrupt: camera.exit() return 0
def main(): logging.basicConfig(format="%(levelname)s: %(name)s: %(message)s", level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) print("Getting list of files") files = list_files(camera, context) if not files: print("No files found") return 1 path = files[0] print("Copying %s to memory" % path) folder, name = os.path.split(path) camera_file = gp.check_result(gp.gp_camera_file_get(camera, folder, name, gp.GP_FILE_TYPE_NORMAL, context)) # read file data using 'slurp' and a buffer allocated in Python info = gp.check_result(gp.gp_camera_file_get_info(camera, folder, name, context)) file_data = bytearray(info.file.size) count = gp.check_result(gp.gp_file_slurp(camera_file, file_data)) print(count, "bytes read") # or read data using 'get_data_and_size' which allocates its own buffer ## file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file)) data = memoryview(file_data) print(type(data), len(data)) print(data[:10].tolist()) image = Image.open(io.BytesIO(file_data)) image.show() print("After deleting camera_file and file_data") del camera_file, file_data print(type(data), len(data)) print(data[:10].tolist()) gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) computer_files = list_computer_files() camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) print('Getting list of files from camera...') camera_files = list_camera_files(camera, context) if not camera_files: print('No files found') return 1 print('Copying files...') for path in camera_files: info = get_camera_file_info(camera, context, path) timestamp = datetime.fromtimestamp(info.file.mtime) folder, name = os.path.split(path) dest_dir = get_target_dir(timestamp) dest = os.path.join(dest_dir, name) if dest in computer_files: continue print('%s -> %s' % (path, dest_dir)) if not os.path.isdir(dest_dir): os.makedirs(dest_dir) camera_file = gp.check_result(gp.gp_file_new()) gp.check_result(gp.gp_camera_file_get( camera, folder, name, gp.GP_FILE_TYPE_NORMAL, camera_file, context)) gp.check_result(gp.gp_file_save(camera_file, dest)) gp.check_result(gp.gp_camera_exit(camera, context)) return 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() camera = gp.Camera() camera.init(context) files = list_files(camera, context) if not files: print("No files found") return 1 print("File list") print("=========") for path in files[:10]: print(path) print("...") for path in files[-10:]: print(path) info = get_file_info(camera, context, files[-1]) print print("File info") print("=========") print("image dimensions:", info.file.width, info.file.height) print("image type:", info.file.type) print("file mtime:", datetime.fromtimestamp(info.file.mtime).isoformat(" ")) camera.exit(context) return 0
def takePhoto(self): return self.takePhoto2() logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) self.bCameraBusy = True gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) print('Capturing image') file_path = gp.check_result( gp.gp_camera_capture(camera, gp.GP_CAPTURE_IMAGE)) print('Camera file path: {0}/{1}'.format(file_path.folder, file_path.name)) target = os.path.join('~/tmp', file_path.name) target = os.path.join(CURRENT_DIR, '..', 'LightPaintings', file_path.name) print('Copying image to', target) camera_file = gp.check_result( gp.gp_camera_file_get(camera, file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL)) gp.check_result(gp.gp_file_save(camera_file, target)) if (self.completeRepeats == self.iRepeats): subprocess.call(['xdg-open', target]) gp.check_result(gp.gp_camera_exit(camera)) self.bCameraBusy = False return 0
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) computer_files = list_computer_files() camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) print('Getting list of files from camera...') camera_files = list_camera_files(camera) if not camera_files: print('No files found') return 1 print('Copying files...') for path in camera_files: info = get_camera_file_info(camera, path) timestamp = datetime.fromtimestamp(info.file.mtime) folder, name = os.path.split(path) dest_dir = get_target_dir(timestamp) dest = os.path.join(dest_dir, name) if dest in computer_files: continue print('%s -> %s' % (path, dest_dir)) if not os.path.isdir(dest_dir): os.makedirs(dest_dir) camera_file = gp.check_result(gp.gp_camera_file_get( camera, folder, name, gp.GP_FILE_TYPE_NORMAL)) gp.check_result(gp.gp_file_save(camera_file, dest)) gp.check_result(gp.gp_camera_exit(camera)) return 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() camera = gp.Camera() camera.init(context) files = list_files(camera, context) if not files: print('No files found') return 1 print('File list') print('=========') for path in files[:10]: print(path) print('...') for path in files[-10:]: print(path) print() print('Exif data') print('=========') for path in files: if os.path.splitext(path)[1].lower() != '.jpg': continue exif = get_file_exif(camera, context, path) for key in ('EXIF DateTimeOriginal', 'EXIF LensModel', 'Image Copyright'): if key in exif: print(key, ':', exif[key]) break print() camera.exit(context) return 0
def connect_init(): """ A function that summarizes the items to be performed all at once when connecting. Returns ------- theta_list : list List of connected THETAs -------- Japanese -------- 接続に際して一斉に行う項目をまとめた関数 Returns ------- theta_list : list 接続されているThetaのリスト """ logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) xtp_dev_list = get_xtp_dev_list() theta_list = check_if_theta(xtp_dev_list) # I was getting an error with the unmount and commented it out. unmount_theta(theta_list) for addr in theta_list: print('[{:s}]'.format(addr)) return theta_list
def main(): # use Python logging logging.basicConfig(filename= logFile + '.log', format='%(asctime)s: %(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) # find cameras cameras = gp.check_result(gp.gp_camera_autodetect())
def __init__(self): print "init AstroCamCanon" gp.check_result(gp.use_python_logging()) self.context = gp.gp_context_new() self.camera = gp.check_result(gp.gp_camera_new()) print "config" camera_config = gp.check_result(gp.gp_camera_get_config(self.camera, self.context)) child_count = gp.check_result(gp.gp_widget_count_children(camera_config)) print child_count for n in range(child_count): try: print "============" child = gp.check_result(gp.gp_widget_get_child(camera_config, n)) name = gp.check_result(gp.gp_widget_get_name(child)) print name chtype = gp.check_result(gp.gp_widget_get_type(child)) print chtype ro = gp.check_result(gp.gp_widget_get_readonly(child)) print ro cdildcen = gp.check_result(gp.gp_widget_count_children(child)) print cdildcen except Exception, e: print e
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)) print('Getting list of files') files = list_files(camera) if not files: print('No files found') return 1 path = files[0] print('Copying %s to memory' % path) folder, name = os.path.split(path) camera_file = gp.check_result(gp.gp_camera_file_get( camera, folder, name, gp.GP_FILE_TYPE_NORMAL)) ## # read file data using 'slurp' and a buffer allocated in Python ## info = gp.check_result( ## gp.gp_camera_file_get_info(camera, folder, name)) ## file_data = bytearray(info.file.size) ## count = gp.check_result(gp.gp_file_slurp(camera_file, file_data)) ## print(count, 'bytes read') # or read data using 'get_data_and_size' which allocates its own buffer file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file)) data = memoryview(file_data) print(type(data), len(data)) print(data[:10].tolist()) image = Image.open(io.BytesIO(file_data)) image.show() print('After deleting camera_file and file_data') del camera_file, file_data print(type(data), len(data)) print(data[:10].tolist()) gp.check_result(gp.gp_camera_exit(camera)) return 0
def main(argv=None): if argv is None: argv = sys.argv logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) storage_info = gp.check_result( gp.gp_camera_get_storageinfo(camera, context)) if len(storage_info) > 1: print('Unable to handle camera with multiple storage media') return 1 if len(storage_info) == 0: print('No storage info available') return 2 si = storage_info[0] if not (si.fields & gp.GP_STORAGEINFO_MAXCAPACITY and si.fields & gp.GP_STORAGEINFO_FREESPACEKBYTES): print('Cannot read storage capacity') return 3 print('Camera has %.1f%% free space' % (100.0 * float(si.freekbytes) / float(si.capacitykbytes))) if len(argv) < 2: return 4 if len(argv) > 2: print('usage: %s [percent_to_clear]' % argv[0]) return 5 target = float(argv[1]) / 100.0 target = int(target * float(si.capacitykbytes)) free_space = si.freekbytes if free_space >= target: print('Sufficient free space') return 0 print('Getting file list...') files = list_files(camera, context) mtime = {} size = {} for path in files: info = get_file_info(camera, context, path) mtime[path] = info.file.mtime size[path] = info.file.size files.sort(key=lambda x: mtime[x], reverse=True) while True: while files and free_space < target: path = files.pop() print('Delete', path) delete_file(camera, context, path) free_space += size[path] // 1000 storage_info = gp.check_result( gp.gp_camera_get_storageinfo(camera, context)) si = storage_info[0] print('Camera has %.1f%% free space' % (100.0 * float(si.freekbytes) / float(si.capacitykbytes))) free_space = si.freekbytes if free_space >= target: break gp.check_result(gp.gp_camera_exit(camera, context)) return 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)) files = list_files(camera) if not files: print('No files found') return 1 print('File list') print('=========') for path in files[:10]: print(path) print('...') for path in files[-10:]: print(path) info = get_file_info(camera, files[-1]) print print('File info') print('=========') print('image dimensions:', info.file.width, info.file.height) print('image type:', info.file.type) print('file mtime:', datetime.fromtimestamp(info.file.mtime).isoformat(' ')) gp.check_result(gp.gp_camera_exit(camera)) return 0
def take_photo(): # Get the directory containing this script photoDir = os.path.dirname(os.path.realpath(__file__)) # Create capture directory photoDirName = "photos" photoDir = os.path.join(photoDir, photoDirName) if not os.path.exists(photoDir): print("Creating photo directory") os.makedirs(photoDir) logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) print('Capturing image') file_path = gp.check_result( gp.gp_camera_capture(camera, gp.GP_CAPTURE_IMAGE)) print('Camera file path: {0}/{1}'.format(file_path.folder, file_path.name)) photoFile = os.path.join(photoDir, file_path.name) print('Copying image to', photoFile) camera_file = gp.check_result( gp.gp_camera_file_get(camera, file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL)) gp.check_result(gp.gp_file_save(camera_file, photoFile)) #subprocess.call(['xdg-open', photoFile]) gp.check_result(gp.gp_camera_exit(camera)) return photoFile
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) print('Getting list of files') files = list_files(camera, context) if not files: print('No files found') return 1 path = files[0] print('Copying %s to memory in 100 kilobyte chunks' % path) folder, name = os.path.split(path) file_info = gp.check_result(gp.gp_camera_file_get_info( camera, folder, name, context)) data = bytearray(file_info.file.size) view = memoryview(data) chunk_size = 100 * 1024 offset = 0 while offset < len(data): bytes_read = gp.check_result(gp.gp_camera_file_read( camera, folder, name, gp.GP_FILE_TYPE_NORMAL, offset, view[offset:offset + chunk_size], context)) offset += bytes_read print(bytes_read) print(' '.join(map(str, data[0:10]))) image = Image.open(io.BytesIO(data)) image.show() gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def __init__(self): self._gp_lock = Lock() self._cameras_dict_lock = Lock() gp.check_result(gp.use_python_logging()) self._cameras_dict: Dict[str, GpCamera] = {} atexit.register(self.disconnect_all)
def main(): def callback(level, domain, string, data=None): print('Callback: level =', level, ', domain =', domain, ', string =', string) if data: print('Callback data:', data) camera = gp.Camera() # add our own callback print('Using Python callback') print('=====================') callback_obj = gp.check_result( gp.gp_log_add_func(gp.GP_LOG_VERBOSE, callback)) print('callback_obj', callback_obj) # create an error gp.gp_camera_init(camera) # uninstall callback del callback_obj # add our own callback, with data print('Using Python callback, with data') print('================================') callback_obj = gp.check_result( gp.gp_log_add_func(gp.GP_LOG_VERBOSE, callback, 'some data')) print('callback_obj', callback_obj) # create an error gp.gp_camera_init(camera) # uninstall callback del callback_obj # set gphoto2 to use Python's logging directly print('Using Python logging') print('====================') logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) # create an error gp.gp_camera_init(camera) return 0
def connect_camera(): global CAMERA logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) CAMERA = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(CAMERA)) # required configuration will depend on camera type! print "Checking camera config" # get configuration tree 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)) # make sure it's not raw if 'raw' in value.lower(): raise PeripheralStatusError('Camera is setup to record raw, but we need previs, and preview does not work with 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))
def main(): logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) print('Getting list of files') files = list_files(camera) if not files: print('No files found') return 1 path = files[0] print('Copying %s to memory' % path) folder, name = os.path.split(path) camera_file = gp.check_result( gp.gp_camera_file_get(camera, folder, name, gp.GP_FILE_TYPE_NORMAL)) ## # read file data using 'slurp' and a buffer allocated in Python ## info = gp.check_result( ## gp.gp_camera_file_get_info(camera, folder, name)) ## file_data = bytearray(info.file.size) ## count = gp.check_result(gp.gp_file_slurp(camera_file, file_data)) ## print(count, 'bytes read') # or read data using 'get_data_and_size' which allocates its own buffer file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file)) data = memoryview(file_data) print(type(data), len(data)) print(data[:10].tolist()) image = Image.open(io.BytesIO(file_data)) image.show() print('After deleting camera_file and file_data') del camera_file, file_data print(type(data), len(data)) print(data[:10].tolist()) gp.check_result(gp.gp_camera_exit(camera)) return 0
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) print('Getting list of files') files = list_files(camera, context) if not files: print('No files found') return 1 path = files[0] print('Copying %s to memory' % path) folder, name = os.path.split(path) camera_file = gp.check_result(gp.gp_camera_file_get( camera, folder, name, gp.GP_FILE_TYPE_NORMAL, context)) file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file)) data = memoryview(file_data) print(type(data), len(data)) print(data[:10].tolist()) image = Image.open(io.BytesIO(file_data)) image.show() print('After deleting camera_file and file_data') del camera_file, file_data print(type(data), len(data)) print(data[:10].tolist()) gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def capture(save_path, filename): #log to be used by gphoto 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)) config = camera.get_config(context) target = config.get_child_by_name('viewfinder') target.set_value(1) camera.set_config(config, context) target.set_value(0) camera.set_config(config, context) time.sleep(2) #capture the image (to camera's internal SD card) file_path = gp.check_result(gp.gp_camera_capture( camera, gp.GP_CAPTURE_IMAGE)) #Copy the image over usb to the local filesystem target = os.path.join(save_path, filename) camera_file = gp.check_result(gp.gp_camera_file_get( camera, file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL)) gp.gp_file_save(camera_file, target) #exit the camera to complete the process gp.gp_camera_exit(camera) return 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() if hasattr(gp, 'gp_camera_autodetect'): # gphoto2 version 2.5+ cameras = gp.check_result(gp.gp_camera_autodetect(context)) else: port_info_list = gp.check_result(gp.gp_port_info_list_new()) gp.check_result(gp.gp_port_info_list_load(port_info_list)) abilities_list = gp.check_result(gp.gp_abilities_list_new()) gp.check_result(gp.gp_abilities_list_load(abilities_list, context)) cameras = gp.check_result( gp.gp_abilities_list_detect(abilities_list, port_info_list, context)) n = 0 for name, value in cameras: print('camera number', n) print('===============') print(name) print(value) print() n += 1 return 0
def init_camera(self): self.log.debug("Init GPhoto2 camera") callback_obj = gp.check_result(gp.use_python_logging()) self.camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(self.camera)) # required configuration will depend on camera type! self.log.info('Checking camera config') # get configuration tree config = gp.check_result(gp.gp_camera_get_config(self.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)) # make sure it's not raw if 'raw' in value.lower(): self.log.error('Cannot preview raw images') return None # 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(self.camera, config)) return True
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) print('Getting list of files') files = list_files(camera) if not files: print('No files found') return 1 path = files[0] print('Copying %s to memory in 100 kilobyte chunks' % path) folder, name = os.path.split(path) file_info = gp.check_result(gp.gp_camera_file_get_info( camera, folder, name)) data = bytearray(file_info.file.size) view = memoryview(data) chunk_size = 100 * 1024 offset = 0 while offset < len(data): bytes_read = gp.check_result(gp.gp_camera_file_read( camera, folder, name, gp.GP_FILE_TYPE_NORMAL, offset, view[offset:offset + chunk_size])) offset += bytes_read print(bytes_read) print(' '.join(map(str, data[0:10]))) image = Image.open(io.BytesIO(data)) image.show() gp.check_result(gp.gp_camera_exit(camera)) return 0
def main(): logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) files = list_files(camera, context) if not files: print('No files found') return 1 print('File list') print('=========') for path in files[:10]: print(path) print('...') for path in files[-10:]: print(path) info = get_file_info(camera, context, files[-1]) print print('File info') print('=========') print('image dimensions:', info.file.width, info.file.height) print('image type:', info.file.type) print('file mtime:', datetime.fromtimestamp(info.file.mtime).isoformat(' ')) gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def main(): logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.Camera() camera.init() files = list_files(camera) if not files: print('No files found') return 1 print('File list') print('=========') for path in files[:10]: print(path) print('...') for path in files[-10:]: print(path) print() print('Exif data') print('=========') for path in files: if os.path.splitext(path)[1].lower() != '.jpg': continue exif = get_file_exif(camera, path) for key in ('EXIF DateTimeOriginal', 'EXIF LensModel', 'Image Copyright'): if key in exif: print(key, ':', exif[key]) break print() camera.exit() return 0
def main(): # use Python logging logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) # open camera connection camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) # get configuration tree config = gp.check_result(gp.gp_camera_get_config(camera, context)) # find the capture target config item capture_target = gp.check_result( gp.gp_widget_get_child_by_name(config, 'capturetarget')) # print current setting value = gp.check_result(gp.gp_widget_get_value(capture_target)) print('Current setting:', value) # print possible settings for n in range(gp.check_result( gp.gp_widget_count_choices(capture_target))): choice = gp.check_result(gp.gp_widget_get_choice(capture_target, n)) print('Choice:', n, choice) # clean up gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def main(argv=None): if argv is None: argv = sys.argv logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) storage_info = gp.check_result(gp.gp_camera_get_storageinfo(camera, context)) if len(storage_info) > 1: print('Unable to handle camera with multiple storage media') return 1 if len(storage_info) == 0: print('No storage info available') return 2 si = storage_info[0] if not (si.fields & gp.GP_STORAGEINFO_MAXCAPACITY and si.fields & gp.GP_STORAGEINFO_FREESPACEKBYTES): print('Cannot read storage capacity') return 3 print('Camera has %.1f%% free space' % ( 100.0 * float(si.freekbytes) / float(si.capacitykbytes))) if len(argv) < 2: return 4 if len(argv) > 2: print('usage: %s [percent_to_clear]' % argv[0]) return 5 target = float(argv[1]) / 100.0 target = int(target * float(si.capacitykbytes)) free_space = si.freekbytes if free_space >= target: print('Sufficient free space') return 0 print('Getting file list...') files = list_files(camera, context) mtime = {} size = {} for path in files: info = get_file_info(camera, context, path) mtime[path] = info.file.mtime size[path] = info.file.size files.sort(key=lambda x: mtime[x], reverse=True) while True: while files and free_space < target: path = files.pop() print('Delete', path) delete_file(camera, context, path) free_space += size[path] // 1000 storage_info = gp.check_result( gp.gp_camera_get_storageinfo(camera, context)) si = storage_info[0] print('Camera has %.1f%% free space' % ( 100.0 * float(si.freekbytes) / float(si.capacitykbytes))) free_space = si.freekbytes if free_space >= target: break gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def init_camera() -> gp.camera: """initialize the camera""" logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) return camera
def initCam(): global context, 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 = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera, context))
def __init__(self, model=None): self.model = model if self.model == "canonEOS": gp.check_result(gp.use_python_logging()) self.context = gp.gp_context_new() self.camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(self.camera, self.context))
def initCam(): global context, 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 = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera, context))
def _init_logging(self): self.callback_obj = gp.check_result( 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, }))
def __init__(self, iso=200, resolution=(1920, 1080), rotation=0, flip=False): BaseCamera.__init__(self, resolution) gp.check_result(gp.use_python_logging()) self._preview_hflip = False self._capture_hflip = flip self._rotation = rotation self._iso = str(iso) self.gphoto2_process = None self.omxplayer_process = None
def __init__(self, *args, **kwargs): RpiCamera.__init__(self, *args, **kwargs) gp.check_result(gp.use_python_logging()) self._gp_cam = gp.Camera() self._gp_cam.init() config = self._gp_cam.get_config() gp_set_config_value(config, 'imgsettings', 'iso', self._cam.iso) gp_set_config_value(config, 'settings', 'capturetarget', 'Memory card') self._gp_cam.set_config(config)
def configureLogging(numeric_level, logfile, console): ## VARIABLES format_entry = '%(asctime)s.%(msecs)03d | %(module)-10s [%(levelname)-8s] %(message)s' format_date = '%Y-%m-%d %H:%M:%S' formatter = logging.Formatter(format_entry, format_date) log_lvl = logging_level(numeric_level) # Configure root logger to a file logging.root.handlers = [] logging.basicConfig(format='%(asctime)s.%(msecs)03d | %(module)-10s [%(levelname)-8s] %(message)s',\ level=logging.DEBUG ,\ filename='debug.log') if console: # Logging to sys.stderr consolehandler = logging.StreamHandler() consolehandler.setLevel(log_lvl) consolehandler.setFormatter(formatter) logging.getLogger("").addHandler(consolehandler) # Logging to file is provided if logfile: # Use rotating files : 1 per day, and all are kept (no rotation thus) filehandler = handlers.TimedRotatingFileHandler(logfile, when='d', interval=1, backupCount=0) filehandler.suffix = "%Y-%m-%d" # We can set here different log formats for the stderr output ! filehandler.setLevel(logging.DEBUG) # use the same format as the file filehandler.setFormatter(formatter) # add the handler to the root logger logging.getLogger("").addHandler(filehandler) logging.info("Logging level set to %s", logging_level(numeric_level)) # Have Gphot2 lgos in python logging module gp.use_python_logging() logging.getLogger('gphoto2').setLevel(logging.DEBUG) return logging
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) with context_with_callbacks() as context: camera = gp.Camera() camera.init(context) text = camera.get_summary(context) config = camera.get_config(context) camera.exit(context) return 0
def __init__(self): self.PHOTO_DIR = os.path.expanduser( '~/Documents/photobooth/backend-server/photos') self.file_cache = None logging.basicConfig(format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) self.camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(self.camera)) gp.check_result(gp.gp_camera_capture_preview(self.camera)) self.use_cached = False
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.CRITICAL) gp.check_result(gp.use_python_logging()) camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) trigger_capture(camera, context, 'image.jpg') gp.check_result(gp.gp_camera_exit(camera, context)) return 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
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.Camera() camera.init() text = camera.get_summary() print('Summary') print('=======') print(str(text)) camera.exit() return 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_list = gp.check_result(gp.gp_camera_autodetect(context)) # loop through camera list for index, (name, addr) in enumerate(camera_list): print('{:s} {:s}'.format(addr, name)) return 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 main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = 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)) 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() text = camera.get_summary() print('Summary') print('=======') print(str(text)) try: text = camera.get_manual() print('Manual') print('=======') print(str(text)) except Exception as ex: print(str(ex)) camera.exit() return 0
def main(): # use Python logging logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) gp.check_result(gp.use_python_logging()) # open camera connection camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) # get configuration tree config = gp.check_result(gp.gp_camera_get_config(camera, context)) # find the date/time setting config item and get it # name varies with camera driver # Canon EOS350d - 'datetime' # PTP - 'd034' for name, fmt in (('datetime', '%Y-%m-%d %H:%M:%S'), ('d034', None)): now = datetime.now() OK, datetime_config = gp.gp_widget_get_child_by_name(config, name) if OK >= gp.GP_OK: widget_type = gp.check_result(gp.gp_widget_get_type(datetime_config)) if widget_type == gp.GP_WIDGET_DATE: raw_value = gp.check_result( gp.gp_widget_get_value(datetime_config)) camera_time = datetime.fromtimestamp(raw_value) else: raw_value = gp.check_result( gp.gp_widget_get_value(datetime_config)) if fmt: camera_time = datetime.strptime(raw_value, fmt) else: camera_time = datetime.utcfromtimestamp(float(raw_value)) print('Camera clock: ', camera_time.isoformat(' ')) print('Computer clock:', now.isoformat(' ')) err = now - camera_time if err.days < 0: err = -err lead_lag = 'ahead' print('Camera clock is ahead by',) else: lead_lag = 'behind' print('Camera clock is %s by %d days and %d seconds' % ( lead_lag, err.days, err.seconds)) break else: print('Unknown date/time config item') # clean up gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def getCameralist(self): gp.check_result(gp.use_python_logging()) context = gp.Context() if hasattr(gp, 'gp_camera_autodetect'): 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) n = 0 for name, value in cameras: rospy.loginfo(n, name, value) print(n, name, value) n += 1 return 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)) print('Capturing image') file_path = gp.check_result(gp.gp_camera_capture( camera, gp.GP_CAPTURE_IMAGE)) print('Camera file path: {0}/{1}'.format(file_path.folder, file_path.name)) target = os.path.join('/tmp', file_path.name) print('Copying image to', target) camera_file = gp.check_result(gp.gp_camera_file_get( camera, file_path.folder, file_path.name, gp.GP_FILE_TYPE_NORMAL)) gp.check_result(gp.gp_file_save(camera_file, target)) subprocess.call(['xdg-open', target]) gp.check_result(gp.gp_camera_exit(camera)) return 0
def main(): # use Python logging logging.basicConfig(format="%(levelname)s: %(name)s: %(message)s", level=logging.WARNING) gp.check_result(gp.use_python_logging()) # open camera connection camera = gp.check_result(gp.gp_camera_new()) context = gp.gp_context_new() gp.check_result(gp.gp_camera_init(camera, context)) # get configuration tree config = gp.check_result(gp.gp_camera_get_config(camera, context)) # find the date/time setting config item and set it if set_datetime(config): # apply the changed config gp.check_result(gp.gp_camera_set_config(camera, config, context)) else: print("Could not set date & time") # clean up gp.check_result(gp.gp_camera_exit(camera, context)) return 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() camera = gp.Camera() camera.init(context) files = list_files(camera, context) if not files: print('No files found') return 1 print('File list') print('=========') for path in files[:10]: print(path) print('...') for path in files[-10:]: print(path) print() print('Exif data via GP_FILE_TYPE_NORMAL') print('=================================') for path in files: if os.path.splitext(path)[1].lower() != '.jpg': continue md = get_file_exif_normal(camera, context, path) for key in ('Exif.Photo.DateTimeOriginal', 'Exif.Image.Model', 'Exif.Image.Copyright'): if key in md.get_exif_tags(): print(key, ':', md.get_tag_string(key)) break print() print('Exif data via GP_FILE_TYPE_EXIF') print('===============================') for path in files: if os.path.splitext(path)[1].lower() != '.jpg': continue md = get_file_exif_metadata(camera, context, path) for key in ('Exif.Photo.DateTimeOriginal', 'Exif.Image.Model', 'Exif.Image.Copyright'): if key in md.get_exif_tags(): print(key, ':', md.get_tag_string(key)) break print() camera.exit(context) return 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)) # 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(): print('Cannot preview raw images') return 1 # 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)) # capture preview image (not saved to camera memory card) print('Capturing preview image') camera_file = gp.check_result(gp.gp_camera_capture_preview(camera, context)) file_data = gp.check_result(gp.gp_file_get_data_and_size(camera_file)) # display image data = memoryview(file_data) print(type(data), len(data)) print(data[:10].tolist()) image = Image.open(io.BytesIO(file_data)) image.show() gp.check_result(gp.gp_camera_exit(camera, context)) return 0
def main(): # use Python logging logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) # open camera connection camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_init(camera)) # get camera details abilities = gp.check_result(gp.gp_camera_get_abilities(camera)) # get configuration tree config = gp.check_result(gp.gp_camera_get_config(camera)) # find the date/time setting config item and set it if set_datetime(config, abilities.model): # apply the changed config gp.check_result(gp.gp_camera_set_config(camera, config)) else: print('Could not set date & time') # clean up gp.check_result(gp.gp_camera_exit(camera)) return 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_list = gp.check_result(gp.gp_camera_autodetect(context)) # gp.check_result(gp.gp_camera_init(camera, context)) # camera_list = GetCameraList(context) # loop through camera list for index, (name, addr) in enumerate(camera_list): print('Processing camera {:d}: {:s} {:s}'.format(index, addr, name)) # search ports for camera port name and match to this iteration port_info_list = gp.check_result(gp.gp_port_info_list_new()) gp.check_result(gp.gp_port_info_list_load(port_info_list)) idx = gp.check_result(gp.gp_port_info_list_lookup_path(port_info_list, addr)) # open this camera and associated context camera = gp.check_result(gp.gp_camera_new()) gp.check_result(gp.gp_camera_set_port_info(camera,port_info_list[idx])) gp.check_result(gp.gp_camera_init(camera,context)) # get camera configuration config = gp.check_result(gp.gp_camera_get_config(camera,context)) # grab current value of imageformat and change to JPG image_format_old = get_config_value(config,'imageformat') set_config_value(camera,config,context,'imageformat',jpgFormat) image_format = get_config_value(config,'imageformat') print('Changed image format from {:s} to {:s}'.format(image_format_old,image_format)) # close this camera gp.check_result(gp.gp_camera_exit(camera,context)) return 0
def main(): logging.basicConfig( format='%(levelname)s: %(name)s: %(message)s', level=logging.WARNING) callback_obj = gp.check_result(gp.use_python_logging()) 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) n = 0 for name, value in cameras: print('camera number', n) print('===============') print(name) print(value) print n += 1 return 0