使用python处理用labelme标注的数据集,使文件夹中的图片水平翻转,且对应的json文件也进行相同操作,处理后的图片和josn文件以给定的起始序号生成在新文件夹中
时间: 2024-01-21 12:20:10 浏览: 130
利用python处理图片资料
可以使用Python的PIL库和json库来实现该功能。
首先,需要安装PIL库和json库。可以使用以下命令来安装:
```python
pip install Pillow
```
接着,可以使用以下代码来实现图片水平翻转和对应的json文件的处理:
```python
from PIL import Image
import os
import json
# 原始数据集文件夹
src_folder = "data"
# 处理后的数据集文件夹
dst_folder = "processed_data"
# 起始序号
start_index = 1
# 遍历原始数据集文件夹中的所有文件
for filename in os.listdir(src_folder):
if filename.endswith(".jpg"):
# 处理图片
image_file = os.path.join(src_folder, filename)
with Image.open(image_file) as im:
# 水平翻转图片
flipped_im = im.transpose(method=Image.FLIP_LEFT_RIGHT)
# 生成新的文件名
new_filename = f"{start_index:04d}.jpg"
# 保存处理后的图片
flipped_im.save(os.path.join(dst_folder, new_filename))
# 处理对应的json文件
json_file = os.path.join(src_folder, os.path.splitext(filename)[0] + ".json")
with open(json_file) as f:
data = json.load(f)
# 修改json中的坐标信息
for shape in data["shapes"]:
for point in shape["points"]:
point[0] = im.width - point[0]
# 生成新的文件名
new_filename = f"{start_index:04d}.json"
# 保存处理后的json文件
with open(os.path.join(dst_folder, new_filename), "w") as f:
json.dump(data, f)
start_index += 1
```
其中,`src_folder`是原始数据集文件夹,`dst_folder`是处理后的数据集文件夹,`start_index`是起始序号。代码遍历原始数据集文件夹中的所有`.jpg`文件,对每个文件进行水平翻转,并对应修改对应的`.json`文件中的坐标信息。处理后的图片和json文件以给定的起始序号生成在新文件夹中。
阅读全文