Initial commit
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
|
||||
import json
|
||||
import sys
|
||||
|
||||
from cli.parse_args import parse_args
|
||||
|
||||
|
||||
def _normalize_channel(ch: str) -> str:
|
||||
"""Y/Cb/Cr в канонический вид."""
|
||||
m = {"y": "Y", "cb": "Cb", "cr": "Cr"}
|
||||
s = (ch or "").strip().lower()
|
||||
return m.get(s, ch)
|
||||
|
||||
|
||||
def _print_result(result):
|
||||
if result is None:
|
||||
return
|
||||
if isinstance(result, (dict, list)):
|
||||
print(json.dumps(result, ensure_ascii=False, indent=2))
|
||||
else:
|
||||
print(result)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
args = parse_args()
|
||||
try:
|
||||
if args.cmd == "embed":
|
||||
from modes.embed_mode import EmbedMode
|
||||
runner = EmbedMode()
|
||||
result = runner.run(
|
||||
input_path=args.input,
|
||||
label_path=args.label,
|
||||
output_path=args.output,
|
||||
channel=_normalize_channel(args.channel),
|
||||
seq0=args.seq0,
|
||||
)
|
||||
|
||||
elif args.cmd == "extract":
|
||||
from modes.extract_mode import ExtractMode
|
||||
runner = ExtractMode()
|
||||
result = runner.run(
|
||||
input_path=args.input,
|
||||
output_path=args.output,
|
||||
channel=_normalize_channel(args.channel),
|
||||
seq0=args.seq0
|
||||
)
|
||||
|
||||
elif args.cmd == "analyze":
|
||||
from modes.analyze_quality import AnalyzeQuality
|
||||
runner = AnalyzeQuality()
|
||||
result = runner.run(
|
||||
original_path=args.original,
|
||||
stego_path=args.stego,
|
||||
space=args.space,
|
||||
metrics=args.metrics,
|
||||
)
|
||||
|
||||
elif args.cmd == "generate":
|
||||
from modes.generate_mode import GenerateMode
|
||||
runner = GenerateMode()
|
||||
# Ветка generate имеет вложенные подкоманды: args.gen in {"gradient","chess"}
|
||||
result = runner.run(
|
||||
kind=args.gen,
|
||||
size=args.size,
|
||||
channels=args.channels,
|
||||
output_path=args.output,
|
||||
tile=getattr(args, "tile", None),
|
||||
)
|
||||
|
||||
else:
|
||||
raise RuntimeError(f"Неизвестная команда: {args.cmd}")
|
||||
|
||||
_print_result(result)
|
||||
return 0
|
||||
|
||||
except Exception as exc:
|
||||
print(f"Ошибка: {exc}", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
Reference in New Issue
Block a user