78 lines
2.4 KiB
Python
78 lines
2.4 KiB
Python
import open3d as o3d
|
|
import os
|
|
import argparse
|
|
import numpy as np
|
|
from PIL import Image
|
|
|
|
class DisplayProcessor:
|
|
def __init__(self):
|
|
|
|
# argv = sys.argv[sys.argv.index("--") + 1:] if "--" in sys.argv else []
|
|
parser = argparse.ArgumentParser()
|
|
|
|
parser.add_argument(
|
|
"--id",
|
|
required=True,
|
|
)
|
|
parser.add_argument(
|
|
"--mask",
|
|
default=0
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
self.id = args.id
|
|
mask = args.mask
|
|
out_dir = f"out.{self.id}.nomask"
|
|
if mask==1:
|
|
out_dir = f"out.{self.id}"
|
|
|
|
self.mesh = None
|
|
self.obj_path = f"/home/algo/Documents/openMVS/data/{self.id}/{out_dir}/mesh.obj"
|
|
|
|
self.load_and_show()
|
|
|
|
def load_and_show(self):
|
|
# 加载并变换所有模型
|
|
|
|
# 加载网格
|
|
mesh = None
|
|
try:
|
|
mesh = o3d.io.read_triangle_mesh(self.obj_path, enable_post_processing=True)
|
|
if not mesh.has_vertices():
|
|
print(f"警告: 网格无有效顶点 - {self.obj_path}")
|
|
except Exception as e:
|
|
print(f"加载模型失败: {self.obj_path} - {e}")
|
|
|
|
if not mesh:
|
|
print("没有加载到任何模型,请检查错误信息")
|
|
else:
|
|
# 可视化模型
|
|
print("显示模型... (按'Q'退出)")
|
|
|
|
try:
|
|
from packaging import version
|
|
o3d_version = version.parse(o3d.__version__)
|
|
# 新版本 draw_geometries 参数
|
|
if o3d_version >= version.parse("0.13.0"):
|
|
o3d.visualization.draw_geometries(
|
|
[mesh],
|
|
window_name="模型展示",
|
|
mesh_show_back_face=True,
|
|
mesh_show_wireframe=False
|
|
)
|
|
# 旧版本 draw_geometries 参数
|
|
else:
|
|
o3d.visualization.draw_geometries(
|
|
[mesh],
|
|
window_name="模型展示",
|
|
point_show_normal=False,
|
|
mesh_show_back_face=True
|
|
)
|
|
except Exception as e:
|
|
print(f"使用 draw_geometries 可视化失败: {e}")
|
|
|
|
# 主程序
|
|
if __name__ == "__main__":
|
|
DisplayProcessor().load_and_show()
|