U-NET 图像预处理

该博客介绍了三个Python脚本,分别用于将BMP图像转换为统一大小的PNG,将JSON标注文件转换为PNG图像和标签,并对比两个目录下文件的差异。脚本实现了图像格式转换、尺寸调整、命名规则和数据集创建。同时,它检查了具有JSON注释的原始图像并保存了它们。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先将图像格式及大小、类型、名称 做出调整
这里将 bmp 转为 png 大小统一为 500*500, 按照数字序号命名

bmp_png.py


from PIL import Image
import glob
import os

out_dir = 'D:/图像数据/橙子/TestIMG/'
cnt = 501
for img in glob.glob('D:/图像数据/橙子/测试图像/*.bmp'):
    Image.open(img).resize((500,500)).save(os.path.join(out_dir, format(str(cnt), '0>3s') + '.png'))
    cnt += 1

json 转 png

json_png.py

#!/usr/bin/python
# -*- coding: UTF-8 -*-
# !H:\Anaconda3\envs\new_labelme\python.exe
import argparse
import json
import os
import os.path as osp
import base64
import warnings

import PIL.Image
import yaml

from labelme import utils

import cv2
import numpy as np
from skimage import img_as_ubyte


# from sys import argv

def main():
    warnings.warn("This script is aimed to demonstrate how to convert the\n"
                  "JSON file to a single image dataset, and not to handle\n"
                  "multiple JSON files to generate a real-use dataset.")

    json_file = "D:/GPU/labelme/data3/json20201030"

    # freedom
    list_path = os.listdir(json_file)
    print('freedom =', json_file)
    for i in range(0, len(list_path)):
        path = os.path.join(json_file, list_path[i])
        if os.path.isfile(path):

            data = json.load(open(path))
            img = utils.img_b64_to_arr(data['imageData'])
            lbl, lbl_names = utils.labelme_shapes_to_label(img.shape, data['shapes'])

            captions = ['%d: %s' % (l, name) for l, name in enumerate(lbl_names)]

            lbl_viz = utils.draw_label(lbl, img, captions)
            # out_dir = osp.basename(path).replace('.', '_')
            out_dir = osp.basename(path).split('.json')[0]
            save_file_name = out_dir
            # out_dir = osp.join(osp.dirname(path), out_dir)

            if not osp.exists(json_file + 'mask'):
                os.mkdir(json_file + 'mask')
            maskdir = json_file + 'mask'

            if not osp.exists(json_file + 'mask_viz'):
                os.mkdir(json_file + 'mask_viz')
            maskvizdir = json_file + 'mask_viz'

            out_dir1 = maskdir
           
            PIL.Image.fromarray(lbl).save(out_dir1 + '/' + save_file_name + '.png')

            PIL.Image.fromarray(lbl_viz).save(maskvizdir + '/' + save_file_name +
                                              '_label_viz.png')
          
            with open(osp.join(out_dir1, 'label_names.txt'), 'w') as f:
                for lbl_name in lbl_names:
                    f.write(lbl_name + '\n')

            warnings.warn('info.yaml is being replaced by label_names.txt')
            info = dict(label_names=lbl_names)
            with open(osp.join(out_dir1, 'info.yaml'), 'w') as f:
                yaml.safe_dump(info, f, default_flow_style=False)

            print('Saved to: %s' % out_dir1)


if __name__ == '__main__':
    # base64path = argv[1]
    main()

python对比两个目录下的文件名差异, 将有json 文件对应的原始图像单独保存处理,因为有的图像没有json文件

jsonANDpng.py


from PIL import Image
import glob
import os

out_dir = 'D:/图像数据/橙子/GPU/trainIMG/'
in_dir='D:/图像数据/橙子/GPU/SourceIMG/'
i=0
for img in glob.glob('D:/图像数据/橙子/GPU/labelmemask/*.png'):
    img=os.path.join(in_dir, os.path.basename(img))
    Image.open(img).save(os.path.join(out_dir, os.path.basename(img)))
    i=i+1
    print(i)
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值