色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

coco從json提取分割圖片

錢諍諍1年前9瀏覽0評論

COCO是一個廣泛使用的圖像分割數據集,包含超過330,000張圖像,具有80種不同的對象類別。在這篇文章中,我們將介紹如何使用Python從COCO JSON數據中提取分割圖片。

首先,我們需要導入必要的Python庫,包括numpy,matplotlib和PIL等:

import json
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image

然后,我們需要加載COCO JSON文件,并解析成Python字典:

with open('annotations/instances_train2017.json', 'r') as f:
data = json.load(f)

接下來,我們可以定義一個函數來提取分割圖片并將其保存到指定的目錄下:

def extract_segmented_images(data, save_path):
annotations = data['annotations']
images = data['images']
for ann in annotations:
image_id = ann['image_id']
image = next(img for img in images if img['id'] == image_id)
file_name = image['file_name']
segmented_image = Image.open('images/'+file_name).convert('RGBA')
mask = np.zeros((image['height'], image['width']), dtype=np.uint8)
for seg in ann['segmentation']:
mask = np.maximum(mask, seg['size'])
mask_image = Image.fromarray(mask, mode='L').convert('1')
segmented_image.putalpha(mask_image)
segmented_image.save(save_path+file_name)

在這個函數中,我們首先獲取每個注釋對象的圖像ID,然后從圖像列表中選擇該ID對應的圖像。接下來,我們打開該圖像的分割版本,并將其轉換為RGBA模式。

然后,我們創建一個大小與圖像相同的新掩碼,并將其初始化為零。接下來,我們將所有分割對象的大小合并為掩碼的最大值。然后,我們將這個掩碼轉化為灰度圖像,并將其轉化為二進制形式。

最后,我們將分割圖像與掩碼相乘,并將其保存到指定目錄下的文件中。

最后,我們可以調用這個函數來提取所有分割圖像:

extract_segmented_images(data, 'segmented_images/')

這樣,我們就成功地從COCO JSON數據集中提取并保存了所有的分割圖像,以便進行后續的圖像分析和處理。