Esempio n. 1
0
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)
Esempio n. 2
0
    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
Esempio n. 3
0
    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())