使用python处理用labelme标注的数据集,使文件夹中的图片水平翻转,且对应的json文件也进行水平翻转的操作,使用给定的起始序号将处理后的图片和josn文件生成在新文件夹中
时间: 2024-01-22 17:17:18 浏览: 191
批量处理+Python+获得LabelMe标注的json文件中`imageData`字段信息【Base64编码】
可以使用Python的PIL库来实现对图片的水平翻转,并使用json库来读取和写入json文件。以下是一个处理Labelme标注数据集的示例代码:
```python
import os
import json
from PIL import Image
# 定义待处理的文件夹路径、新文件夹路径和起始序号
source_folder = 'path/to/source/folder'
target_folder = 'path/to/target/folder'
start_index = 1
# 遍历待处理文件夹中的所有文件
for filename in os.listdir(source_folder):
if filename.endswith('.jpg') or filename.endswith('.jpeg') or filename.endswith('.png'):
# 打开图片文件并水平翻转
image_path = os.path.join(source_folder, filename)
image = Image.open(image_path)
flipped_image = image.transpose(Image.FLIP_LEFT_RIGHT)
# 定义新文件名和路径
new_filename = f'{start_index:06d}.jpg' # 使用六位数字作为新文件名
new_image_path = os.path.join(target_folder, new_filename)
# 保存翻转后的图片
flipped_image.save(new_image_path)
# 打开对应的json文件并进行水平翻转
json_path = os.path.join(source_folder, f'{filename[:-4]}.json')
with open(json_path, 'r') as f:
data = json.load(f)
# 修改json文件中的坐标信息
for shape in data['shapes']:
for point in shape['points']:
point[0] = image.width - point[0]
# 定义新json文件名和路径
new_json_filename = f'{start_index:06d}.json'
new_json_path = os.path.join(target_folder, new_json_filename)
# 保存修改后的json文件
with open(new_json_path, 'w') as f:
json.dump(data, f)
start_index += 1 # 更新起始序号
```
该代码将遍历指定的待处理文件夹中的所有图片文件,对每个图片文件进行水平翻转和对应的json文件的坐标信息修改,并将处理后的图片和json文件保存在新文件夹中。新文件夹中的文件名以给定的起始序号开始,以六位数字作为文件名。
阅读全文