All constants are in config
This commit is contained in:
@@ -40,6 +40,8 @@ class Annotator(QMainWindow):
|
||||
data_dir=Path(config.data_dir),
|
||||
out_dir=self.out_dir,
|
||||
clips_file=Path(config.clips_file),
|
||||
mask_filename=config.filenames.mask,
|
||||
zip_extension=config.filenames.zip_extension,
|
||||
)
|
||||
|
||||
self.setWindowTitle("River Annotator")
|
||||
@@ -55,11 +57,13 @@ class Annotator(QMainWindow):
|
||||
self.cfg.max_frames,
|
||||
self.cfg.display_max,
|
||||
self.cfg.fps_fallback,
|
||||
self.cfg.filenames.video_in_zip,
|
||||
self.cfg.filenames.video_tmp_suffix,
|
||||
)
|
||||
self._pending_answers = self._read_saved_answers()
|
||||
|
||||
def _read_saved_mask(self):
|
||||
mask_path = self.out_dir / self.filename.stem / "mask.png"
|
||||
mask_path = self.out_dir / self.filename.stem / self.cfg.filenames.mask
|
||||
if not mask_path.exists():
|
||||
return None
|
||||
mask_full = np.array(Image.open(mask_path).convert("L"))
|
||||
@@ -70,7 +74,7 @@ class Annotator(QMainWindow):
|
||||
)
|
||||
|
||||
def _read_saved_answers(self):
|
||||
meta_path = self.out_dir / self.filename.stem / "metadata.json"
|
||||
meta_path = self.out_dir / self.filename.stem / self.cfg.filenames.metadata
|
||||
if not meta_path.exists():
|
||||
return None
|
||||
with open(meta_path) as f:
|
||||
@@ -214,23 +218,26 @@ class Annotator(QMainWindow):
|
||||
(self.w, self.h),
|
||||
interpolation=cv2.INTER_NEAREST,
|
||||
)
|
||||
Image.fromarray(mask_full * 255).save(out / "mask.png")
|
||||
fn = self.cfg.filenames
|
||||
Image.fromarray(mask_full * 255).save(out / fn.mask)
|
||||
|
||||
with open(out / "metadata.json", "w") as f:
|
||||
with open(out / fn.metadata, "w") as f:
|
||||
json.dump(self.get_answers(), f, indent=2)
|
||||
|
||||
mid = len(self.frames) // 2
|
||||
frame = self.frames[mid]
|
||||
Image.fromarray(frame).save(out / "frame.png")
|
||||
Image.fromarray(self._make_overlay(frame)).save(out / "overlay.png")
|
||||
Image.fromarray(frame).save(out / fn.frame)
|
||||
Image.fromarray(self._make_overlay(frame)).save(out / fn.overlay)
|
||||
|
||||
if self.extras:
|
||||
Image.fromarray((self.mc.mask * 255).astype(np.uint8)).save(out / "mask_vis.png")
|
||||
Image.fromarray((self.mc.mask * 255).astype(np.uint8)).save(
|
||||
out / fn.mask_vis
|
||||
)
|
||||
overlay_frames = [self._make_overlay(f) for f in self.frames]
|
||||
self._save_gif(self.frames, out / "video_original_hires.gif", scale=1.0)
|
||||
self._save_gif(self.frames, out / "video_original_lowres.gif", scale=0.5)
|
||||
self._save_gif(overlay_frames, out / "video_overlay_hires.gif", scale=1.0)
|
||||
self._save_gif(overlay_frames, out / "video_overlay_lowres.gif", scale=0.5)
|
||||
self._save_gif(self.frames, out / fn.gif_original_hires, scale=1.0)
|
||||
self._save_gif(self.frames, out / fn.gif_original_lowres, scale=0.5)
|
||||
self._save_gif(overlay_frames, out / fn.gif_overlay_hires, scale=1.0)
|
||||
self._save_gif(overlay_frames, out / fn.gif_overlay_lowres, scale=0.5)
|
||||
|
||||
print("Saved:", out)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user