def sample_video(video_file, image_path, sample_interval): """Sample video frame with the specified time interval :params video_file: path to the video file :params image_path: path to save the sampled images :params sample_interval: sample interval in seconds """ io.mkdir_p(image_path) video_file = video_file.replace(" ", "\ ") s = "ffmpeg -i {} -loglevel quiet -vf fps=1/{} -qscale 1 {}/%0{}d.jpg".format(video_file, sample_interval, image_path, ZERO_PADDING) os.system(s)
def write(self, filename=None): """Save exif data to file.""" if filename is None: filename = self._filename # copy file first if needed if self._filename != filename: file_path = os.path.dirname(filename) mkdir_p(file_path) shutil.copy(self._filename, filename) exif_bytes = piexif.dump(self._ef) try: piexif.insert(exif_bytes, filename) except IOError: type, value, traceback = sys.exc_info() print >> sys.stderr, "Error saving file:", value
p.add_argument("--email", help="Mapillary user email") p.add_argument('--size', help='Image size (medium, original, small)', default="original") return p.parse_args() if __name__ == "__main__": args = get_args() user_id = args.user_id size = args.size data_path = os.path.join(args.data_path, user_id) image_path = os.path.join(data_path, size) io.mkdir_p(image_path) meta_file = os.path.join(data_path, "meta.json") # Prepare meta data if os.path.isfile(meta_file) is False: # Download meta data print "Downloading meta data from Panoramio API ..." meta = download_metadata(user_id, size) with open(meta_file, "wb") as f: f.write(json.dumps(meta, indent=4)) else: # load meta data with open(meta_file, "rb") as f: meta = json.loads(f.read())
info = get_authentication_info() if info is not None: MAPILLARY_USERNAME, MAPILLARY_EMAIL, MAPILLARY_PASSWORD = info else: print("You are missing one of the environment variables MAPILLARY_USERNAME, MAPILLARY_EMAIL or MAPILLARY_PASSWORD. These are required.") sys.exit() upload_token = get_upload_token(MAPILLARY_EMAIL, MAPILLARY_PASSWORD) else: MAPILLARY_USERNAME, MAPILLARY_EMAIL, MAPILLARY_PASSWORD = None, None, None upload_token = None with open(json_path, "rb") as f: metadata = json.loads(f.read()) mkdir_p(output_path) images = os.listdir(image_path) num_added = 0 for i, f in enumerate(images): if f.lower().endswith(('jpg', 'jpeg', 'png', 'tif', 'tiff', 'pgm', 'pnm', 'gif')): output_file = os.path.join(output_path, os.path.basename(f)) if f in metadata: add_mapillary_description( os.path.join(image_path, f), MAPILLARY_USERNAME, MAPILLARY_EMAIL, project_key, upload_token, metadata[f], output_file)
p.add_argument("data_path", help="Path to save image and meta data") p.add_argument("--user", help="Mapillary user name") p.add_argument("--email", help="Mapillary user email") p.add_argument('--size', help='Image size (medium, original, small)', default="original") return p.parse_args() if __name__ == "__main__": args = get_args() user_id = args.user_id size = args.size data_path = os.path.join(args.data_path, user_id) image_path = os.path.join(data_path, size) io.mkdir_p(image_path) meta_file = os.path.join(data_path, "meta.json") # Prepare meta data if os.path.isfile(meta_file) is False: # Download meta data print "Downloading meta data from Panoramio API ..." meta = download_metadata(user_id, size) with open(meta_file, "wb") as f: f.write(json.dumps(meta, indent=4)) else: # load meta data with open(meta_file, "rb") as f: meta = json.loads(f.read())