diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7bfcd7a --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.pyc \ No newline at end of file diff --git a/Movie2imgConverter.py b/Movie2imgConverter.py index 8002aa9..21c9eaa 100644 --- a/Movie2imgConverter.py +++ b/Movie2imgConverter.py @@ -74,3 +74,48 @@ dilation = cv2.dilate(mask, kernel) out = cv2.inpaint(frame, dilation, 30, cv2.INPAINT_NS) return out + + + def convert_iphone_movie2img(self): + src_dir = self.args.movie_dir + if os.path.exists(src_dir) is False: + print("動画のディレクトリパスがミスってます") + raise + + movie_name_list = glob(os.path.join(src_dir, "*" + self.args.endo_movie_extend)) + + if len(movie_name_list) == 0: + print("対象のディレクトリに動画が見つかりません") + raise + + sequence_num = 0 + file_name_num = 0 + for movie_name in movie_name_list: + cap = cv2.VideoCapture(movie_name) + if not cap.isOpened(): + print("ビデオキャプチャエラー") + raise + + print("start processing {}".format(os.path.basename(movie_name))) + cur_frame = 0 + sum_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT) + + out_subdir = os.path.join(self.args.out_dir, '{}seq'.format(sequence_num)) + sequence_num += 1 + os.makedirs(out_subdir, exist_ok=True) + + while True: + ret, frame = cap.read() + if not ret: + print('{} / {}'.format(sum_frame, int(sum_frame))) + break + + if (cur_frame % self.args.pass_num) == 0: + frame = cv2.resize(frame, self.resized_size, interpolation=cv2.INTER_LANCZOS4) + cv2.imwrite(os.path.join(out_subdir, '{:08}.png'.format(file_name_num)), frame) + file_name_num += 1 + + if (cur_frame % 300) == 0: + print('{} / {}'.format(cur_frame, int(sum_frame))) + + cur_frame += 1 diff --git a/__pycache__/DumpTxtEditor.cpython-36.pyc b/__pycache__/DumpTxtEditor.cpython-36.pyc index ec0081e..91b5b7b 100644 --- a/__pycache__/DumpTxtEditor.cpython-36.pyc +++ b/__pycache__/DumpTxtEditor.cpython-36.pyc Binary files differ diff --git a/main.py b/main.py index b79fac3..91cf330 100644 --- a/main.py +++ b/main.py @@ -4,7 +4,7 @@ from DumpTxtEditor import DumpTxtEditor parser = argparse.ArgumentParser() -parser.add_argument("--mode", type=str, required=True, choices=["calibrate", "convert", "edit_txt"], help="処理モード") +parser.add_argument("--mode", type=str, required=True, choices=["calibrate", "convert", "convert_iphone", "edit_txt"], help="処理モード") parser.add_argument("--resized_height", type=int, default=352, help="画像サイズの高さ(幅もだが,アップサンプリングの" "関係で2の乗数を多く含む方が良い)") parser.add_argument("--resized_width", type=int, default=480, help="画像サイズの幅") @@ -40,12 +40,16 @@ if mode == 'calibrate': editor = EndoCalibrator(args) - editor.calibrate_row_size(Is_example_showed=False) + editor.calibrate_row_size(Is_example_showed=True) if mode == 'convert': editor = Movie2imgConverter(args) editor.convert_endo_movie2img() + if mode == 'convert_iphone': + editor = Movie2imgConverter(args) + editor.convert_iphone_movie2img() + if mode == 'edit_txt': editor = DumpTxtEditor(args) editor.edit_dump_txt()