import argparse from deglint_subtract_nir import deglint_subtract_nir from deglint_oxygen_absorption_valley import deglint_oxygen_absorption_valley from deglint_regression_slope import deglint_regression_slope def main(): parser = argparse.ArgumentParser(description="此程序用于去除水域数据的耀斑,暂时支持3种算法。") # parser.add_argument("--global_arg", type=str, help="A global argument for all modes", required=True) # 创建子命令解析器 subparsers = parser.add_subparsers(dest="algorithm", required=True, help="Choose a mode") subnir = subparsers.add_parser("subnir", help="Mode 1 description") subnir.add_argument('-i1', '--input', type=str, required=True, help='输入影像文件的路径') subnir.add_argument('-i2', '--input_water_mask', type=str, required=True, help='输入水域掩膜文件的路径') subnir.add_argument('-o', '--output', type=str, required=True, help='输出文件的路径') subnir.add_argument('-s', '--start_wave', type=float, required=True, help='nir开始波段') subnir.add_argument('-e', '--end_wave', type=float, required=True, help='nir结束波段') subnir.set_defaults(func=deglint_subtract_nir) regression_slope = subparsers.add_parser("regression_slope", help="Mode 2 description") regression_slope.add_argument('-i1', '--input', type=str, required=True, help='输入影像文件的路径') regression_slope.add_argument('-i2', '--input_water_mask', type=str, required=True, help='输入水域掩膜文件的路径') regression_slope.add_argument('-o', '--output', type=str, required=True, help='输出文件的路径') regression_slope.add_argument('-s', '--start_wave', type=float, required=True, help='nir开始波段') regression_slope.add_argument('-e', '--end_wave', type=float, required=True, help='nir结束波段') regression_slope.add_argument('-r', '--roi', type=str, required=True, help='输入roi文件的路径') regression_slope.set_defaults(func=deglint_regression_slope) oxygen_absorption = subparsers.add_parser("oxygen_absorption", help="Mode 3 description") oxygen_absorption.add_argument('-i1', '--input', type=str, required=True, help='输入影像文件的路径') oxygen_absorption.add_argument('-i2', '--input_water_mask', type=str, required=True, help='输入水域掩膜文件的路径') oxygen_absorption.add_argument('-o', '--output', type=str, required=True, help='输出文件的路径') oxygen_absorption.add_argument('-l', '--left_shoulder_wave', type=float, required=True, help='氧气吸收谷左肩波长') oxygen_absorption.add_argument('-v', '--valley_wave', type=float, required=True, help='氧气吸收谷底波长') oxygen_absorption.add_argument('-r', '--right_shoulder_wave', type=float, required=True, help='氧气吸收谷右肩波长') oxygen_absorption.add_argument('-sw', '--shoulder_window', type=float, required=True, help='氧气吸收谷左右肩平均窗口,半径') oxygen_absorption.add_argument('-vw', '--valley_window', type=float, required=True, help='氧气吸收谷底平均窗口,半径') oxygen_absorption.set_defaults(func=deglint_oxygen_absorption_valley) # 解析参数 args = parser.parse_args() if args.algorithm == "subnir": # 处理文件D:\PycharmProjects\sun_glint\test_data\ref_deepWater_20230914_154510时,730-750效果是最好的 args.func(args.input, args.input_water_mask, args.output, args.start_wave, args.end_wave) elif args.algorithm == "regression_slope": args.func(args.input, args.input_water_mask, args.output, args.start_wave, args.end_wave, args.roi) elif args.algorithm == "oxygen_absorption": args.func(args.input, args.input_water_mask, args.output, args.left_shoulder_wave, args.valley_wave, args.right_shoulder_wave, args.shoulder_window, args.valley_window) # Press the green button in the gutter to run the script. if __name__ == '__main__': main()