根据本地coco数据集中的test2017提取出分辨率大于1080p的一些特定类的图片,并保存新的JSON,python
时间: 2024-02-05 16:10:50 浏览: 154
以下是提取并保存符合条件的图片信息到新JSON文件的Python代码示例:
```python
import json
from PIL import Image
# 读取原始JSON文件
with open('annotations/instances_test2017.json', 'r') as f:
data = json.load(f)
# 定义特定类别和最小分辨率
categories = ['person', 'car', 'bus'] # 特定类别
min_resolution = (1920, 1080) # 最小分辨率
# 新JSON文件的内容
new_data = {
'info': data['info'],
'licenses': data['licenses'],
'images': [],
'annotations': [],
'categories': data['categories']
}
# 遍历每张图片
for img in data['images']:
# 读取图片并获取分辨率
image = Image.open('test2017/' + img['file_name'])
width, height = image.size
# 判断是否符合条件
if width >= min_resolution[0] and height >= min_resolution[1]:
for annotation in data['annotations']:
if annotation['image_id'] == img['id'] and data['categories'][annotation['category_id']]['name'] in categories:
new_data['annotations'].append(annotation)
new_data['images'].append(img)
# 保存新JSON文件
with open('new_annotations.json', 'w') as f:
json.dump(new_data, f)
```
在上面的代码中,我们首先读取了原始的COCO JSON文件,并定义了特定的类别和最小分辨率。然后,我们遍历了每张图片,读取它们的分辨率并判断是否符合条件。如果符合条件,我们就将该图片和它对应的标注信息保存到新的JSON文件中。
请注意,上面的代码可能需要根据你的具体需求进行一些修改。例如,你可能需要修改COCO数据集的路径,或者修改特定类别和最小分辨率的值。
阅读全文