pixel3dmm / scripts /run_preprocessing.py
alexnasa's picture
Update scripts/run_preprocessing.py
9e2567f verified
raw
history blame
1.88 kB
import subprocess
import sys
import os
import tyro
from pixel3dmm import env_paths
def run_and_check(cmd, cwd=None):
"""
Run a command (list of args) in an optional cwd.
Raises CalledProcessError (with stdout/stderr) on failure.
"""
print(f"> {' '.join(cmd)} (in {cwd or os.getcwd()})")
result = subprocess.run(
cmd,
cwd=cwd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
text=True,
check=True, # will raise on non-zero exit
)
print(result.stdout) # print normal output
return result
def main(video_or_images_path: str):
# derive video name
if os.path.isdir(video_or_images_path):
vid_name = os.path.basename(video_or_images_path)
else:
vid_name, _ = os.path.splitext(os.path.basename(video_or_images_path))
try:
# cropping
run_and_check(
["python", "run_cropping.py", "--video_or_images_path", video_or_images_path],
cwd=os.path.join(env_paths.CODE_BASE, "scripts")
)
# MICA preprocessing
run_and_check(
["python", "demo.py", "-video_name", vid_name],
cwd=os.path.join(env_paths.CODE_BASE, "src", "pixel3dmm", "preprocessing", "MICA")
)
# face segmentation
run_and_check(
["python", "run_facer_segmentation.py", "--video_name", vid_name],
cwd=os.path.join(env_paths.CODE_BASE, "scripts")
)
except subprocess.CalledProcessError as e:
# Print the error, including stdout/stderr
print(f"ERROR: Command {e.cmd!r} exited with {e.returncode}", file=sys.stderr)
print("---- STDOUT ----", file=sys.stderr)
print(e.stdout, file=sys.stderr)
print("---- STDERR ----", file=sys.stderr)
sys.exit(e.returncode)
if __name__ == "__main__":
tyro.cli(main)