将图片和标签文件同时批量缩小到统一大小,亲测有效!

废话不多说,直接上代码,亲测有效!

from PIL import Image
import os
import shutil
import xml.etree.ElementTree as ET

# 获取输入图片文件夹路径
input_images_folder = input("请输入输入图片文件夹的路径:")

# 获取输入标签文件夹路径
input_labels_folder = input("请输入输入标签文件夹的路径:")

# 获取输出图片文件夹路径
output_images_folder = input("请输入输出图片文件夹的路径:")

# 获取输出标签文件夹路径
output_labels_folder = input("请输入输出标签文件夹的路径:")

# 确保输出图片文件夹存在
if not os.path.exists(output_images_folder):
    os.makedirs(output_images_folder)

# 确保输出标签文件夹存在
if not os.path.exists(output_labels_folder):
    os.makedirs(output_labels_folder)

# 遍历输入图片文件夹中的所有文件
for filename in os.listdir(input_images_folder):
    # 拼接输入图片文件的完整路径
    input_image_path = os.path.join(input_images_folder, filename)

    # 检查是否为图片文件
    if os.path.isfile(input_image_path) and filename.lower().endswith(('.jpg', '.jpeg', '.png')):
        # 打开图片文件
        image = Image.open(input_image_path)

        # 调整图片分辨率为640x640
        resized_image = image.resize((640, 640))

        # 构造输出图片文件的完整路径
        output_image_path = os.path.join(output_images_folder, filename)

        # 保存调整分辨率后的图片
        resized_image.save(output_image_path)

        # 构造对应的标签文件路径
        label_filename = os.path.splitext(filename)[0] + ".xml"
        input_label_path = os.path.join(input_labels_folder, label_filename)
        output_label_path = os.path.join(output_labels_folder, label_filename)

        # 如果标签文件存在,则复制并调整其内容
        if os.path.isfile(input_label_path):
            # 打开输入标签文件
            tree = ET.parse(input_label_path)
            root = tree.getroot()

            # 调整标签文件中的尺寸信息
            size = root.find('size')
            width = int(size.find('width').text)
            height = int(size.find('height').text)
            size.find('width').text = '640'
            size.find('height').text = '640'

            # 调整标签文件中的位置信息
            scale_x = 640 / width
            scale_y = 640 / height

            for obj in root.findall('object'):
                bbox = obj.find('bndbox')
                xmin = int(bbox.find('xmin').text)
                ymin = int(bbox.find('ymin').text)
                xmax = int(bbox.find('xmax').text)
                ymax = int(bbox.find('ymax').text)

                bbox.find('xmin').text = str(int(xmin * scale_x))
                bbox.find('ymin').text = str(int(ymin * scale_y))
                bbox.find('xmax').text = str(int(xmax * scale_x))
                bbox.find('ymax').text = str(int(ymax * scale_y))

            # 保存调整后的标签文件
            tree.write(output_label_path)

        print(f"已处理: {filename}")

print("图片分辨率和标签文件调整完成!")

这个代码是将xml和图片同时缩小到640x640 。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
主要功能: 1.多用户注册各自使用,互不干予。 2.在自己的空间中创建多个相册,并上传多照片进行在线查看管理。 3.相册共享权限可设好友、所有人、指定人,并可指定共享类别、查看密码。 4.强大的相册及照片搜索功能,可按各种属性进行复合查找。 5.照片打印、设为封面、设为用户头像等多种操作。 6.在线大头贴拍照功能,并有数十种相框可供选择。 7.数码照片40多种属性EXIF信息显示。 8.照片可批量打包成ZIP文件下载。 9.对相册及照片添加文字简介功能。 10.强大的在线图片编辑功能(缩放,旋转,水印,裁剪)。 11.类似Windows中的图片缩略图预览模式,方便查看图片。 12.注册用户有二级域名空间可以让访客随时访问自己的空间进行查看及留言。 13.可自由设定相册中的照片排序方式或手动拖拽进行照片排序。 14.上传时用户可自己指定是否需要缩小大图到网页标准尺寸,以节省空间。 15.相册及照片标签输入方式,可按各类标签查看及搜索照片。 16.他人共享照片收藏功能,实时查看、评论、及其它操作。 17.对共享照片投票功能,可按投票数进行排序。 18.图片地址点击复制和短地址功能。 19.好友功能,可将他人加为好友,并查看对方的指定好友相册及发送短消息。 20.公共相册显示区,显示每个用户共享给所有人的相册和照片并可进行显示及评论。 21.用户可按等级权限自由绑定顶级域名代替外部空间地址,空间地址个性化。 22.界面样式自定义并可由用户在前台选择喜爱的空间风格。 23.用户空间个性化定义公告及标题显示,和对访客留言的查看及管理。 24.站内短信功能,提供收件箱、发件箱、已发送、垃圾箱功能。 25.网银、支付宝、财付通、快钱,PayNow(台湾)在线支付,空间自动续费升级,别人代充,充值卡使用管理。 26.用户积分功能, 可积分兑换金币并可升级空间。 27.前台违法举报,实时对上传内容进行管理。 28.网站留言功能,用户可实时向管理员反馈信息,管理员后台回复。 29.自动过滤内容和禁传非法文件,防止不正当使用。 30.可针对不同等级,不同分组的用户设置进入时公告。 31.批量用户管理操作,群发短信/邮件,可对列表中的所有用户统一一次操作。 32.后台实时查看及管理用户上传的所有照片和建立的相册。 33.强大的用户查找,根据有效期、最后登录时间,审核及锁定,等级查找。 34.用户等级制,可设每个等级的空间、上传大小、相册和照片个数及其它条数限制。 35.为每个等级设置开启外链、外链地址、开启二级域名及等级费用。 36.注册审核、邮件验证、防重复IP注册、时长注册功能。 37.来访IP限制设定和管理员可登录的IP设定。 38.后台管理员可进行管理权限划分并记录操作日志。 39.可直观设定相册、照片、用户、公告、留言的外部调用参数,支持模板调用。 40.可设置相册及照片的推荐,模板调用。 41.管理员在后台可统一设置用户上传照片后添加的水印。 42.可设置照片需审核后才能显示已共享的照片。 43.导入用户功能,支持ACCESS或Excel中导出的TXT格式信息,分项目一次导入。 44.导出用户功能,可选择条件过滤导出,指定导出项目,导出成txt或Excel格式。 45.后台可指定原图被缩减的最大尺寸,以防巨大图片。 46.页面广告分区添加及管理。 47.随时在线整理硬盘和数据库中的数据,保持数据最优化。 48.前台模板标签调用,可组建自己的照片站页面。 49.上传照片路径可按日期建立目录,确保同一目录下图片不会过多。 50.完善的等级防盗链功能,支持链接排除、链接包含、个人独立设置可以链接的地址。 51.Flash上传模式支持一次选择多图片、进度显示上传。上传完毕自动生成等比例缩略图。 52.可以同时下载多张网络图片到空间,并可设置水印等功能。 53.上传时可自由设置是否在照片上添加文字水印、图片水印或不添加水印。 54.用户分组设置,可分多组域名及多台服务器协同管理。 55.仅需为程序目录及用户存放目录设置写入及修改权限,系统更安全。 56.完美兼容firefox等其它非IE内核浏览器。 57.三层架构模式开发,扩充及调用更方便。 58.内含ajax文件操作技术,更加提高用户体验,提高系统运行效率。 59.分简体版、繁体版、英文版三种版本。 60.可以和《桃源网络硬盘.Net》用户完全整合。 61.全面的整合接口,支持注册、登录、修改资料及密码、添加、删除、审核、锁定用户,支持不同域名整合。 62.多种数据库支持:ACCESS、MSSQL、MySQL、Oracle。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YiyiaiaiNiuniu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值