47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
#!/usr/bin/env python
|
|
|
|
# edit from https://gist.github.com/hysts/81a0d30ac4f33dfa0c8859383aec42c2
|
|
|
|
import argparse
|
|
import pathlib
|
|
|
|
import cv2
|
|
import numpy as np
|
|
from tensorboard.backend.event_processing import event_accumulator
|
|
|
|
|
|
def save(outdir: pathlib.Path, tag, event_acc):
|
|
events = event_acc.Images(tag)
|
|
|
|
for index, event in enumerate(events):
|
|
s = np.frombuffer(event.encoded_image_string, dtype=np.uint8)
|
|
image = cv2.imdecode(s, cv2.IMREAD_COLOR)
|
|
outpath = outdir / f"{tag.replace('/', '_')}@{index}.png"
|
|
cv2.imwrite(outpath.as_posix(), image)
|
|
|
|
|
|
# ffmpeg -framerate 1 -i ./tmp/test_b/%04d.jpg -vcodec mpeg4 test_b.mp4
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('--path', type=str, required=True)
|
|
parser.add_argument('--outdir', type=str, required=True)
|
|
parser.add_argument("--tag", type=str, required=False)
|
|
args = parser.parse_args()
|
|
|
|
event_acc = event_accumulator.EventAccumulator(args.path, size_guidance={'images': 0})
|
|
event_acc.Reload()
|
|
|
|
outdir = pathlib.Path(args.outdir)
|
|
outdir.mkdir(exist_ok=True, parents=True)
|
|
|
|
if args.tag is None:
|
|
for tag in event_acc.Tags()['images']:
|
|
save(outdir, tag, event_acc)
|
|
else:
|
|
assert args.tag in event_acc.Tags()['images'], f"{args.tag} not in {event_acc.Tags()['images']}"
|
|
save(outdir, args.tag, event_acc)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|