使用筛选后的coco数据集json文件,复制对应coco数据集图像

发布时间:2024年01月12日

一、使用筛选后的coco数据集json文件,复制对应coco数据集图像

有时候,我们需要对已经有的数据集进行数据划分,划分后的coco数据集需要寻找对应的图片,可以使用下面的程序脚本。

二、完整代码

import json
import os
import shutil

def copy_images_by_json(image_folder, json_file, output_folder):
    with open(json_file, 'r') as file:
        data = json.load(file)

    image_data = {img['id']: img['file_name'] for img in data['images']}
    
    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for image_id, file_name in image_data.items():
        source_path = os.path.join(image_folder, file_name)
        destination_path = os.path.join(output_folder, file_name)

        if os.path.exists(source_path):
            shutil.copy(source_path, destination_path)
            print(f"已复制 {file_name} 到 {output_folder}")
        else:
            print(f"警告:在 {image_folder} 中找不到图像文件 {file_name}")

# 使用示例
image_folder_path = "输入文件夹路径"
json_file_path = "JSON 文件路径"
output_folder_path = "输出文件夹路径"

copy_images_by_json(image_folder_path, json_file_path, output_folder_path)

首先,导入三个必要的模块:json、os 和 shutil。json 模块用于读取 JSON 文件,os 模块用于处理文件路径,shutil 模块用于执行文件复制操作。

接下来,定义一个名为 copy_images_by_json 的函数,它接受三个参数:image_folder(输入图像文件夹路径)、json_file(JSON 文件路径)和 output_folder(输出文件夹路径)。

在函数内部,使用 open 函数打开 JSON 文件,并使用 json.load 函数将文件内容加载为 Python 字典形式的数据。这些数据包含了图像的 ID 和文件名等信息。

使用字典推导式创建一个名为 image_data 的字典,其中键是图像的 ID,值是图像的文件名。这样我们可以根据 ID 快速查找到对应的文件名。

接下来,使用 os.path.exists 函数检查输出文件夹是否存在。如果不存在,则使用 os.makedirs 函数创建该文件夹。

然后,使用一个循环遍历 image_data 字典中的每个图像。对于每个图像,构建源文件路径和目标文件路径。

使用 os.path.exists 函数检查源文件路径是否存在。如果存在,使用 shutil.copy 函数将源文件复制到目标文件路径,并打印相应的提示信息。

如果源文件路径不存在,则打印警告信息,指示找不到图像文件。

最后,提供一个使用示例,需要将输入文件夹路径、JSON 文件路径和输出文件夹路径替换为实际的路径。

文章来源:https://blog.csdn.net/weixin_43788282/article/details/135545318
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。