|
|
|
@ -4,7 +4,8 @@ import os |
|
|
|
import numpy as np |
|
|
|
import numpy as np |
|
|
|
from scipy.spatial.transform import Rotation |
|
|
|
from scipy.spatial.transform import Rotation |
|
|
|
import sys |
|
|
|
import sys |
|
|
|
sys.path.append("/home/algo/Documents/openMVS/openMVS/libs/MVS/utils") |
|
|
|
# sys.path.append("/home/algo/Documents/openMVS/openMVS/libs/MVS/utils") |
|
|
|
|
|
|
|
sys.path.append("/root/code/openMVS/libs/MVS/utils") |
|
|
|
from colmap_loader import read_cameras_text, read_images_text, read_int_text, write_int_text, read_indices_from_file |
|
|
|
from colmap_loader import read_cameras_text, read_images_text, read_int_text, write_int_text, read_indices_from_file |
|
|
|
# from get_pose_matrix import get_w2c |
|
|
|
# from get_pose_matrix import get_w2c |
|
|
|
import argparse |
|
|
|
import argparse |
|
|
|
@ -33,6 +34,7 @@ from typing import Dict, List, Set |
|
|
|
import struct |
|
|
|
import struct |
|
|
|
import math |
|
|
|
import math |
|
|
|
# import os |
|
|
|
# import os |
|
|
|
|
|
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
|
|
|
CameraModel = collections.namedtuple( |
|
|
|
CameraModel = collections.namedtuple( |
|
|
|
"CameraModel", ["model_id", "model_name", "num_params"] |
|
|
|
"CameraModel", ["model_id", "model_name", "num_params"] |
|
|
|
@ -2175,6 +2177,8 @@ class ModelProcessor: |
|
|
|
base_path: 基础文件路径 |
|
|
|
base_path: 基础文件路径 |
|
|
|
""" |
|
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
os.makedirs(base_path, exist_ok = True) |
|
|
|
|
|
|
|
|
|
|
|
print(f"save_occlusion_data {base_path}, {len(result1)}, {len(result2)}, {len(result3)}") |
|
|
|
print(f"save_occlusion_data {base_path}, {len(result1)}, {len(result2)}, {len(result3)}") |
|
|
|
|
|
|
|
|
|
|
|
# 处理返回的可见面字典 - 转换为图像名到面编号集合的映射 |
|
|
|
# 处理返回的可见面字典 - 转换为图像名到面编号集合的映射 |
|
|
|
@ -2197,9 +2201,12 @@ class ModelProcessor: |
|
|
|
for image_name, face_list in result3.items(): |
|
|
|
for image_name, face_list in result3.items(): |
|
|
|
delete_edge_faces_map[image_name] = set(face_list) |
|
|
|
delete_edge_faces_map[image_name] = set(face_list) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 保存 visible_faces_map |
|
|
|
# 保存 visible_faces_map |
|
|
|
try: |
|
|
|
try: |
|
|
|
with open(base_path + "/_visible_faces_map.txt", "w", encoding='utf-8') as map_file: |
|
|
|
file_name = "_visible_faces_map.txt" |
|
|
|
|
|
|
|
file_path = Path(base_path) / file_name |
|
|
|
|
|
|
|
with open(file_path, "w", encoding='utf-8') as map_file: |
|
|
|
for image_name, face_set in visible_faces_map.items(): |
|
|
|
for image_name, face_set in visible_faces_map.items(): |
|
|
|
# 写入图像名称和所有面ID,用空格分隔 |
|
|
|
# 写入图像名称和所有面ID,用空格分隔 |
|
|
|
line = image_name + " " + " ".join(str(face) for face in face_set) + "\n" |
|
|
|
line = image_name + " " + " ".join(str(face) for face in face_set) + "\n" |
|
|
|
@ -2209,7 +2216,9 @@ class ModelProcessor: |
|
|
|
|
|
|
|
|
|
|
|
# 保存 face_visible_relative |
|
|
|
# 保存 face_visible_relative |
|
|
|
try: |
|
|
|
try: |
|
|
|
with open(base_path + "/_face_visible_relative.txt", "w", encoding='utf-8') as relative_file: |
|
|
|
file_name = "_face_visible_relative.txt" |
|
|
|
|
|
|
|
file_path = Path(base_path) / file_name |
|
|
|
|
|
|
|
with open(file_path, "w", encoding='utf-8') as relative_file: |
|
|
|
for face in face_visible_relative: |
|
|
|
for face in face_visible_relative: |
|
|
|
relative_file.write(str(face) + "\n") |
|
|
|
relative_file.write(str(face) + "\n") |
|
|
|
except IOError as e: |
|
|
|
except IOError as e: |
|
|
|
@ -2217,7 +2226,9 @@ class ModelProcessor: |
|
|
|
|
|
|
|
|
|
|
|
# 保存 edge_faces_map |
|
|
|
# 保存 edge_faces_map |
|
|
|
try: |
|
|
|
try: |
|
|
|
with open(base_path + "/_edge_faces_map.txt", "w", encoding='utf-8') as map_file2: |
|
|
|
file_name = "_edge_faces_map.txt" |
|
|
|
|
|
|
|
file_path = Path(base_path) / file_name |
|
|
|
|
|
|
|
with open(file_path, "w", encoding='utf-8') as map_file2: |
|
|
|
for image_name, face_set in edge_faces_map.items(): |
|
|
|
for image_name, face_set in edge_faces_map.items(): |
|
|
|
line = image_name + " " + " ".join(str(face) for face in face_set) + "\n" |
|
|
|
line = image_name + " " + " ".join(str(face) for face in face_set) + "\n" |
|
|
|
map_file2.write(line) |
|
|
|
map_file2.write(line) |
|
|
|
@ -2226,7 +2237,9 @@ class ModelProcessor: |
|
|
|
|
|
|
|
|
|
|
|
# 保存 delete_edge_faces_map |
|
|
|
# 保存 delete_edge_faces_map |
|
|
|
try: |
|
|
|
try: |
|
|
|
with open(base_path + "/_delete_edge_faces_map.txt", "w", encoding='utf-8') as map_file3: |
|
|
|
file_name = "_delete_edge_faces_map.txt" |
|
|
|
|
|
|
|
file_path = Path(base_path) / file_name |
|
|
|
|
|
|
|
with open(file_path, "w", encoding='utf-8') as map_file3: |
|
|
|
for image_name, face_set in delete_edge_faces_map.items(): |
|
|
|
for image_name, face_set in delete_edge_faces_map.items(): |
|
|
|
line = image_name + " " + " ".join(str(face) for face in face_set) + "\n" |
|
|
|
line = image_name + " " + " ".join(str(face) for face in face_set) + "\n" |
|
|
|
map_file3.write(line) |
|
|
|
map_file3.write(line) |
|
|
|
|