import os import shutil from pathlib import Path import numpy as np # 루트 및 instance/sample 경로 root_dir = Path(__file__).resolve().parents[1] instance_sample = root_dir / "instance" / "sample" # 1. 기존 오염된 마스크들 강제 삭제 (새 연산 강제) print("1. Cleaning old mask files...") for fn in ["mask_csf.npy", "mask_grid_min_z.npy", "mask_pmf.npy", "mask_ransac.npy", "structured.npz"]: p = instance_sample / fn if p.exists(): try: os.remove(p) print(f" Removed: {fn}") except PermissionError: print(f" Skipped (locked): {fn}") # 2. main.py에 탑재된 파이프라인 수동 호출 print("\n2. Triggering process_pipeline manually with corrected codes...") import sys sys.path.append(str(root_dir)) from main import process_pipeline las_path = root_dir / "samples" / "step1_scan" / "cloud_merged.las" process_pipeline("sample", las_path) print("\n3. Finished execution. verifying masks again:") # 최종 카운트 검사 for fn in ["mask_grid_min_z.npy", "mask_csf.npy", "mask_pmf.npy", "mask_ransac.npy"]: p = instance_sample / fn if p.exists(): mask = np.load(p) print(f" {fn:<22} : Total {len(mask):,} pts | Ground {np.sum(mask):,} pts ({np.sum(mask)/len(mask)*100:.2f}%)")