使用python处理用labelme标注的数据集,使文件夹中的图片水平翻转,且对应的json文件中的shape也进行水平翻转的操作,使用给定的起始序号将处理后的图片和josn文件生成在新文件夹中
时间: 2024-01-22 09:17:24 浏览: 61
可以使用PIL库来进行图片的水平翻转,然后利用json库读取和修改json文件中的shape信息,最后将处理后的图片和json文件保存到新文件夹中。以下是代码示例:
```python
import os
import json
from PIL import Image
# 原始数据集文件夹路径
data_dir = 'data'
# 新数据集文件夹路径
new_data_dir = 'new_data'
# 起始序号
start_idx = 0
# 遍历原始数据集文件夹中的每个文件
for filename in os.listdir(data_dir):
if filename.endswith('.jpg'):
# 读取图片并水平翻转
img = Image.open(os.path.join(data_dir, filename))
flipped_img = img.transpose(Image.FLIP_LEFT_RIGHT)
# 生成新的文件名
new_filename = 'img_{:05d}.jpg'.format(start_idx)
# 保存水平翻转后的图片到新数据集文件夹中
flipped_img.save(os.path.join(new_data_dir, new_filename))
# 读取对应的json文件
json_filename = filename[:-4] + '.json'
with open(os.path.join(data_dir, json_filename), 'r') as f:
data = json.load(f)
# 水平翻转json文件中的shape信息
for shape in data['shapes']:
for point in shape['points']:
point[0] = flipped_img.width - point[0]
# 保存修改后的json文件到新数据集文件夹中
with open(os.path.join(new_data_dir, 'img_{:05d}.json'.format(start_idx)), 'w') as f:
json.dump(data, f)
start_idx += 1
```
需要注意的是,以上代码假设原始数据集中的每个图片都有对应的json文件,并且json文件中包含了shape信息。如果实际情况不符合这个假设,需要进行相应的修改。
阅读全文