三维重构终版

This commit is contained in:
2025-11-02 21:36:35 +08:00
parent f91b09da9d
commit f39009b853
126 changed files with 2870 additions and 2 deletions

110
OpenCV/rename_files.py Normal file
View File

@@ -0,0 +1,110 @@
import os
import re
import shutil
from tqdm import tqdm
# --- 配置参数 ---
# 1. 图片文件夹路径
image_folder = '../label/up'
# 2. 标注文件夹路径
annotation_folder = '../label/up_xml'
# 3. 新文件名的数字位数 (3 -> 000, 001, ...; 5 -> 00000, 00001, ...)
padding_zeros = 3
# --- 配置结束 ---
def rename_dataset_files(img_folder, an_folder, padding=3):
"""
重命名图片和标注文件l系列在前r系列在后按数字顺序排列。
"""
print("开始重命名任务...")
if not os.path.isdir(img_folder):
print(f"错误:图片文件夹 '{img_folder}' 不存在。")
return
if not os.path.isdir(an_folder):
print(f"错误:标注文件夹 '{an_folder}' 不存在。")
return
# 1. 获取所有图片文件名,并按 l 和 r 分组
l_files = []
r_files = []
other_files = []
for filename in os.listdir(img_folder):
if filename.lower().endswith('.jpg'):
base_name = os.path.splitext(filename)[0]
match = re.match(r'([lr])(\d+)', base_name, re.IGNORECASE)
if match:
prefix = match.group(1).lower()
number = int(match.group(2))
if prefix == 'l':
l_files.append((number, filename))
elif prefix == 'r':
r_files.append((number, filename))
else:
other_files.append(filename)
# 2. 对 l 和 r 组内的文件按数字进行排序
l_files.sort()
r_files.sort()
# 3. 合并文件列表l在前r在后
sorted_filenames = [f[1] for f in l_files] + [f[1] for f in r_files]
if not sorted_filenames:
print("在指定的 l/r 命名规则下未找到任何文件。")
if other_files:
print(f"跳过了这些文件: {other_files}")
return
print(f"找到 {len(sorted_filenames)} 个符合 l/r 规则的文件准备重命名。")
# 4. 开始重命名
counter = 0
with tqdm(total=len(sorted_filenames), desc="重命名文件") as pbar:
for old_filename in sorted_filenames:
# 构建新文件名
new_base_name = str(counter).zfill(padding)
new_jpg_name = f"{new_base_name}.jpg"
new_xml_name = f"{new_base_name}.xml"
# 构建旧文件的完整路径
old_base_name = os.path.splitext(old_filename)[0]
old_jpg_path = os.path.join(img_folder, f"{old_base_name}.jpg")
old_xml_path = os.path.join(an_folder, f"{old_base_name}.xml")
# 构建新文件的完整路径
new_jpg_path = os.path.join(img_folder, new_jpg_name)
new_xml_path = os.path.join(an_folder, new_xml_name)
# 执行重命名 (使用 shutil.move 更安全)
try:
if os.path.exists(old_jpg_path):
shutil.move(old_jpg_path, new_jpg_path)
else:
print(f"\n警告:找不到图片文件 {old_jpg_path}")
if os.path.exists(old_xml_path):
shutil.move(old_xml_path, new_xml_path)
else:
print(f"\n警告找不到XML文件 {old_xml_path}")
counter += 1
except Exception as e:
print(f"\n重命名文件 {old_filename} 时出错: {e}")
pbar.update(1)
print(f"\n重命名完成!共处理了 {counter} 对文件。")
if other_files:
print(f"注意:以下文件未被处理,因为它们不符合 l/r 命名规则: {other_files}")
if __name__ == '__main__':
rename_dataset_files(image_folder, annotation_folder, padding=padding_zeros)