4
0
mirror of https://github.com/nerfstudio-project/nerfstudio.git synced 2026-11-10 18:17:31 +08:00

Keep spaces in a COLMAP image name

read_images_text kept only the first word, so "my photo.jpg" came back as "my".
This commit is contained in:
Sasha Mitchell 2026-09-28 17:33:46 +07:00
parent 50e0e3c70c
commit 2f91cb7ad9
No known key found for this signature in database
2 changed files with 33 additions and 1 deletions

View File

@ -204,7 +204,10 @@ def read_images_text(path):
qvec = np.array(tuple(map(float, elems[1:5])))
tvec = np.array(tuple(map(float, elems[5:8])))
camera_id = int(elems[8])
image_name = elems[9]
# COLMAP writes the image name as the rest of the line, so a space stays in the name.
if len(elems) < 10:
raise IndexError("COLMAP image line is missing the name")
image_name = " ".join(elems[9:])
elems = fid.readline().split()
xys = np.column_stack([tuple(map(float, elems[0::3])), tuple(map(float, elems[1::3]))])
point3D_ids = np.array(tuple(map(int, elems[2::3])))

View File

@ -0,0 +1,29 @@
"""COLMAP images.txt names can contain spaces."""
from pathlib import Path
from nerfstudio.data.utils.colmap_parsing_utils import read_images_text
def test_image_name_keeps_spaces(tmp_path: Path):
images_txt = tmp_path / "images.txt"
images_txt.write_text(
"\n".join(
[
"# Image list with two lines of data per image:",
"1 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1 my photo.jpg",
"1.5 2.5 7",
"2 1.0 0.0 0.0 0.0 0.0 0.0 0.0 1 plain.jpg",
"0.0 0.0 -1",
"",
]
)
)
images = read_images_text(images_txt)
assert images[1].name == "my photo.jpg"
assert images[1].point3D_ids.tolist() == [7]
assert images[1].xys.tolist() == [[1.5, 2.5]]
assert images[2].name == "plain.jpg"
assert images[2].point3D_ids.tolist() == [-1]