From 270da0b757fdab2b2bde0da605904b4f5339c142 Mon Sep 17 00:00:00 2001 From: Piero Toffanin Date: Wed, 18 Jan 2023 12:09:52 -0500 Subject: [PATCH] Use max_dimension instead of output_resolution --- opendm/video/parameters.py | 10 +++++----- opendm/video/video2dataset.py | 12 ++++++++---- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/opendm/video/parameters.py b/opendm/video/parameters.py index 7119960c..9fc7c97f 100644 --- a/opendm/video/parameters.py +++ b/opendm/video/parameters.py @@ -24,7 +24,10 @@ class Parameters: if not os.path.exists(args["output"]): os.makedirs(args["output"]) - self.input = args["input"].split(",") + self.input = args["input"] + if isinstance(self.input, str): + self.input = [self.input] + self.output = args["output"] self.start = args.get("start", 0) self.end = args.get("end", None) @@ -35,10 +38,7 @@ class Parameters: self.pixel_black_threshold = args.get("pixel_black_threshold", None) self.use_srt = "use_srt" in args self.frame_format = args.get("frame_format", "jpg") - - # TODO: use max dimension - self.output_resolution = None - #self.output_resolution = tuple(map(int, args["output_resolution"].split("x"))) if args["output_resolution"] else None + self.max_dimension = args.get("max_dimension", None) self.stats_file = args.get("stats_file", None) diff --git a/opendm/video/video2dataset.py b/opendm/video/video2dataset.py index 8a476123..97e8da39 100644 --- a/opendm/video/video2dataset.py +++ b/opendm/video/video2dataset.py @@ -128,7 +128,7 @@ class Video2Dataset: self.f.close() if self.parameters.limit is not None and self.global_idx >= self.parameters.limit: - print("Limit of {} frames reached, trimming dataset to {} frames".format(self.parameters.limit, self.global_idx)) + print("Limit of {} frames reached, trimming dataset".format(self.parameters.limit)) limit_files(output_file_paths, self.parameters.limit) end = time.time() @@ -183,9 +183,13 @@ class Video2Dataset: return res def SaveFrame(self, frame, video_info, srt_parser: SrtFileParser): - - if (self.parameters.output_resolution is not None): - frame = cv2.resize(frame, self.parameters.output_resolution) + max_dim = self.parameters.max_dimension + if max_dim is not None: + h, w, _ = frame.shape + if max_dim < w or max_dim < h: + m = max(w, h) + factor = max_dim / m + frame = cv2.resize(frame, (int(ceil(w * factor)), int(ceil(h * factor)))) path = os.path.join(self.parameters.output, "frame_{}_{}.{}".format(self.global_idx, self.frame_index, self.parameters.frame_format))