stpete2 commited on
Commit
90a062e
·
verified ·
1 Parent(s): 780cd73

Update h5_to_db.py

Browse files
Files changed (1) hide show
  1. h5_to_db.py +16 -7
h5_to_db.py CHANGED
@@ -113,7 +113,7 @@ def add_keypoints(db, h5_path, image_path, img_ext, camera_model, single_camera
113
 
114
  def add_matches(db, h5_path, fname_to_id):
115
  """
116
- matches.h5から直接マッチを追加
117
  """
118
  match_file = h5py.File(os.path.join(h5_path, 'matches.h5'), 'r')
119
 
@@ -122,18 +122,13 @@ def add_matches(db, h5_path, fname_to_id):
122
 
123
  with tqdm(total=n_keys, desc="Adding matches") as pbar:
124
  for pair_key in match_file.keys():
125
- # pair_key = "image_000_image_001" の形式を分割
126
- # "image_000_image_001" → ["image_000", "image_001"]
127
  parts = pair_key.split('_')
128
-
129
- # "image" + "000" + "image" + "001" → "image_000" と "image_001"
130
- # 中央で分割(前半と後半に分ける)
131
  mid = len(parts) // 2
132
  key_1 = '_'.join(parts[:mid])
133
  key_2 = '_'.join(parts[mid:])
134
 
135
  if key_1 not in fname_to_id or key_2 not in fname_to_id:
136
- print(f"Warning: {key_1} or {key_2} not found in fname_to_id")
137
  pbar.update(1)
138
  continue
139
 
@@ -146,7 +141,21 @@ def add_matches(db, h5_path, fname_to_id):
146
  continue
147
 
148
  matches = match_file[pair_key][()]
 
 
 
 
 
 
 
 
 
 
149
  db.add_matches(id_1, id_2, matches)
 
 
 
 
150
  added.add(pair_id)
151
  pbar.update(1)
152
 
 
113
 
114
  def add_matches(db, h5_path, fname_to_id):
115
  """
116
+ matches.h5から直接マッチを追加(COLMAPフォーマット対応)
117
  """
118
  match_file = h5py.File(os.path.join(h5_path, 'matches.h5'), 'r')
119
 
 
122
 
123
  with tqdm(total=n_keys, desc="Adding matches") as pbar:
124
  for pair_key in match_file.keys():
 
 
125
  parts = pair_key.split('_')
 
 
 
126
  mid = len(parts) // 2
127
  key_1 = '_'.join(parts[:mid])
128
  key_2 = '_'.join(parts[mid:])
129
 
130
  if key_1 not in fname_to_id or key_2 not in fname_to_id:
131
+ print(f"Warning: {key_1} or {key_2} not found")
132
  pbar.update(1)
133
  continue
134
 
 
141
  continue
142
 
143
  matches = match_file[pair_key][()]
144
+
145
+ # マッチが空でないか確認
146
+ if len(matches) == 0:
147
+ pbar.update(1)
148
+ continue
149
+
150
+ # COLMAPのフォーマット: (N, 2) の uint32配列
151
+ matches = matches.astype(np.uint32)
152
+
153
+ # マッチを追加
154
  db.add_matches(id_1, id_2, matches)
155
+
156
+ # two_view_geometryも追加(COLMAPが期待する)
157
+ db.add_two_view_geometry(id_1, id_2, matches)
158
+
159
  added.add(pair_id)
160
  pbar.update(1)
161