栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python处理数据集大小、分割训练集、测试集、验证集、label标签

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python处理数据集大小、分割训练集、测试集、验证集、label标签

lpd数据集
    • 改变图片大小(1)
    • 改变图片大小(方法二)


"""Script to prepare resized images/labels for LPD."""


from __future__ import absolute_import
from __future__ import division
from __future__ import print_function


import argparse
import os
import cv2
from PIL import Image


def parse_args(args=None):
    """parse the arguments."""
    parser = argparse.ArgumentParser(description='Prepare resized images/labels dataset for LPD')


    parser.add_argument(
        "--input_dir",
        type=str,
        required=True,
        help="Input directory to OpenALPR's benchmark end2end us license plates."
    )


    parser.add_argument(
        "--output_dir",
        type=str,
        required=True,
        help="Ouput directory to resized images/labels."
    )


    parser.add_argument(
        "--target_width",
        type=int,
        required=True,
        help="target width for resized images/labels."
    )


    parser.add_argument(
        "--target_height",
        type=int,
        required=True,
        help="target height for resized images/labels."
    )
    return parser.parse_args(args)




def prepare_data(input_dir, img_list, output_dir, output_size):
    """Crop the license plates from the orginal images."""


    w, h = output_size


    target_img_path = os.path.join(output_dir, "image")
    target_label_path = os.path.join(output_dir, "label")


    if not os.path.exists(target_img_path):
        os.makedirs(target_img_path)


    if not os.path.exists(target_label_path):
        os.makedirs(target_label_path)


    for img_name in img_list:
        img_path = os.path.join(input_dir, img_name)
        label_path = os.path.join(input_dir,
                                  img_name.split(".")[0] + ".txt")
        print("Resizing {} and its label".format(img_path))


        # resize labels
        img = cv2.imread(img_path)
        (height, width, _) = img.shape
        ratio_w = float(float(w)/float(width) )
        ratio_h = float(float(h)/float(height) )


        with open(label_path, "r") as f:
            label_lines = f.readlines()
            assert len(label_lines) == 1
            label_items = label_lines[0].split()


        assert img_name == label_items[0]
        xmin = int(label_items[1])
        ymin = int(label_items[2])
        width = int(label_items[3])
        xmax = xmin + width
        height = int(label_items[4])
        ymax = ymin + height




        x1 = float(xmin) * ratio_w
        y1 = float(ymin) * ratio_h
        x2 = float(xmax) * ratio_w
        y2 = float(ymax) * ratio_h




        with open(os.path.join(target_label_path,
                               img_name.split(".")[0] + ".txt"), "w") as f:
            f.write("lpd 0.0 0 0.0 {:.2f} {:.2f} {:.2f} {:.2f} 0.0 0.0 0.0 0.0 0.0 0.0 0.0n".format(x1, y1, x2, y2))


        # resize images
        image = Image.open(img_path)
        scale_image = image.resize(output_size, Image.ANTIALIAS)
        scale_image.save(os.path.join(target_img_path, img_name))


def main(args=None):
    """Main function for data preparation."""


    args = parse_args(args)


    w = args.target_width
    h = args.target_height
    output_size = (w,h)


    img_files = []
    for file_name in os.listdir(args.input_dir):
        if file_name.split(".")[-1] == "jpg":
            img_files.append(file_name)


    image_dir = os.path.join(args.output_dir, "data")


    prepare_data(args.input_dir, img_files, image_dir, output_size)
 
    print("nDone. Resized images/labels are saved at {} folder".format(args.output_dir))




if __name__ == "__main__":
    main()

改变图片大小(1)
import os
import cv2


def resize_img(DATADIR, img_size):
    w = img_size[0]
    h = img_size[1]
    '''设置目标像素大小,此处设为300'''
    path = os.path.join(DATADIR)
    # 返回path路径下所有文件的名字,以及文件夹的名字,
    img_list = os.listdir(path)

    for i in img_list:
        if i.endswith('.jpg'):
            # 调用cv2.imread读入图片,读入格式为IMREAD_COLOR
            img_array = cv2.imread((path + '/' + i), cv2.IMREAD_COLOR)
            # 调用cv2.resize函数resize图片
            new_array = cv2.resize(img_array, (w, h), interpolation=cv2.INTER_CUBIC)
            img_name = str(i)
            '''生成图片存储的目标路径'''
            save_path = 'D:/spec/masks/train/'
            if os.path.exists(save_path):
                print(i)
                '''调用cv.2的imwrite函数保存图片'''
                save_img = save_path + img_name
                cv2.imwrite(save_img, new_array)
            else:
                os.mkdir(save_path)
                save_img = save_path + img_name
                cv2.imwrite(save_img, new_array)


if __name__ == '__main__':
    # 设置图片路径
    DATADIR = "D:/data/masks/train"
    #data_k = "yuantu_resize/"
    # 需要修改的新的尺寸
    img_size = [320, 320]
    #resize_img(DATADIR, data_k, img_size)
    resize_img(DATADIR, img_size)


改变图片大小(方法二)
# 批量修改尺寸
import os
from PIL import Image

dir_img = "D:/data/masks/val/"
dir_save = "D:/spec/masks/val/"
size = (320, 320)

# 获取目录下所有图片名
list_temp = os.listdir(dir_img)
list_img = list_temp[1:]  # 因为列表中第0项为Mac OS X操作系统所创造的隐藏文件  .DS_Store,所以从第一项开始取

# 获得路径、打开要修改的图片
for img_name in list_img:
    img_path = dir_img + img_name
    old_image = Image.open(img_path)
    save_path = dir_save + img_name

    # 保存修改尺寸后的图片
    old_image.resize(size, Image.ANTIALIAS).save(save_path)
print("Done!")
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950119.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号