将2000*2000的jpg图片随机裁剪为6个800*800的图片并带有json的标签的代码
时间: 2024-09-11 08:10:58 浏览: 30
为了将一张2000x2000像素的JPG图片随机裁剪成六个800x800像素的小图,并给每个小图添加JSON标签,你可以使用Python的PIL库(Pillow)处理图像,以及json库处理JSON数据。以下是一个简化的示例:
```python
from PIL import Image
import json
import numpy as np
import random
# 打开原始图片
img = Image.open('original.jpg')
width, height = img.size
# 验证图片大小是否满足需求,如果不足则需要先调整尺寸
if width < 800 or height < 800:
raise ValueError("Image size is smaller than required, please resize the image first.")
# 定义裁剪区域和JSON标签格式
crop_size = 800
num_crops = 6
labels = []
# 随机裁剪并保存图片
for _ in range(num_crops):
x = random.randint(0, width - crop_size)
y = random.randint(0, height - crop_size)
cropped_img = img.crop((x, y, x + crop_size, y + crop_size))
cropped_img.save(f"crop_{_}.jpg")
# JSON标签
label = {
"image_id": f"crop_{_}",
"top_left_x": x,
"top_left_y": y,
"width": crop_size,
"height": crop_size
}
labels.append(label)
# 保存JSON文件
with open('crops_labels.json', 'w') as f:
json.dump(labels, f)
阅读全文