问题
图片名称正常来说格式都是 图片名+”.jpg”或”png”,但是有的别人分享的数据集名称不规范,导致有时处理时,会出现一些莫名其妙的问题,比如如下图:
图片的名称出现了两个jpg
标签的名称出现一个.jpg
可能的后果
这种名称不规范的图片和文件名,在后续处理时,是可能导致一些因为名称分隔而出现的错误,比如图片与标签无法匹配,后果不堪设想。
处理方式
我这里提供一个将图片与其对应的标签文件重命名的脚本,只需要传入图片目录路径和标签目录路径即可批量完成重命名为uuid格式的名称,代码如下:
import os
import uuid
def rename_images_and_labels(images_dir, labels_dir):
# 获取图片和标签文件列表
image_files = sorted(os.listdir(images_dir))
# 确保图片和标签文件名一一对应
for image_file in image_files:
# 确保图片有对应的标签文件
label_file = image_file.replace('.jpg', '.txt')
label_path = os.path.join(labels_dir, label_file)
if os.path.exists(label_path):
# 生成唯一的新文件名
unique_name = str(uuid.uuid4())
new_image_name = unique_name + '.jpg'
new_label_name = unique_name + '.txt'
# 获取完整路径
old_image_path = os.path.join(images_dir, image_file)
old_label_path = label_path
new_image_path = os.path.join(images_dir, new_image_name)
new_label_path = os.path.join(labels_dir, new_label_name)
# 重命名图片和标签文件
os.rename(old_image_path, new_image_path)
os.rename(old_label_path, new_label_path)
print(f"Renamed: {image_file} -> {new_image_name}, {label_file} -> {new_label_name}")
# 替换为实际的 images 和 labels 目录路径
images_directory = r"D:\A01PythonProjects3123\labelImg-master\标签文件批量处理\slope.v1i.yolov8\train\images" # 替换为图片目录路径
labels_directory = r"D:\A01PythonProjects3123\labelImg-master\标签文件批量处理\slope.v1i.yolov8\train\labels" # 替换为标签目录路径
# 执行重命名操作
rename_images_and_labels(images_directory, labels_directory)
如图,我将需要处理的图片和标签所在目录传入了脚本中
执行脚本,结果如下,可以看到图片名与其对应的标签名都改为了uuid形式的名称
结语
以上是幽络源的Python批量修改yolo数据集图片及对应标签的名称为uuid的教程,如有不懂之处可加Q群307531422询问
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容