Lip人体分割相关数据集解析、可视化 - python 实现

Lip人体分割相关数据集解析、可视化 - python 实现

代码具体实现如下:

# -*-coding:utf-8-*-
# date:2024-10
# Author: DataBall - XIAN
# Function: lip 数据集解析可视化
import os
import cv2
import random
import numpy as np
import time
'''
'lip': {
        'input_size': [473, 473],
        'num_classes': 20,
        'label': ['Background', 'Hat', 'Hair', 'Glove', 'Sunglasses', 'Upper-clothes', 'Dress', 'Coat',
                  'Socks', 'Pants', 'Jumpsuits', 'Scarf', 'Skirt', 'Face', 'Left-arm', 'Right-arm',
                  'Left-leg', 'Right-leg', 'Left-shoe', 'Right-shoe']
    }
'''

def resize_img_keep_ratio(img, target_size):

    old_size = img.shape[:2]  # 原始图像大小
    ratio = min(target_size[i] / old_size[i] for i in range(len(old_size)))  # 计算比例
    new_size = tuple(int(i * ratio) for i in old_size)  # 计算新的图像大小
    img = cv2.resize(img, (new_size[1], new_size[0]))  # 调整图像大小

    pad_w = target_size[1] - new_size[1]  # 计算宽度填充
    pad_h = target_size[0] - new_size[0]  # 计算高度填充
    top, bottom = pad_h // 2, pad_h - (pad_h // 2)
    left, right = pad_w // 2, pad_w - (pad_w // 2)

    img_new = cv2.copyMakeBorder(img, top, bottom, left, right, cv2.BORDER_CONSTANT, value=(200,200,200))  # 边缘填充
    return img_new
if __name__ == '__main__':
  
    path_ = "D:/LIP/TrainVal_images/train_images/"
    path_ano = "D:/LIP/TrainVal_parsing_annotations/TrainVal_parsing_annotations/train_segmentations/"

    color_list = []
    for i in range(20):
        if i == 0:
            RGB = (0,0,0)
        elif i == 1:
            RGB = (255,0,0)
        elif i == 2:
            RGB = (128,128,0)
        elif i == 3:
            RGB = (0,255,0)
        elif i == 4:
            RGB = (255,0,255)
        elif i == 5:
            RGB = (255,0,130)
        elif i == 6:
            RGB = (0,0,230)
        elif i == 7:
            RGB = (20,80,230)
        elif i == 8:
            RGB = (130,55,20)
        elif i == 9:
            RGB = (180,10,120)
        else:
            RGB = (random.randint(60,225),random.randint(60,225),random.randint(60,225))
        color_list.append(RGB)

    for f_ in os.listdir(path_):
        img = cv2.imread(path_ + f_)
        img_ano = cv2.imread(path_ano + f_.replace(".jpg",".png"))
        mask = np.zeros(img.shape).astype(np.uint8)
        for i in range(20):
            v_idx = np.where(img_ano==i)
            if len(v_idx[0]):
                mask[v_idx[0],v_idx[1]] = color_list[i]
        print("f_:",f_)

        img = resize_img_keep_ratio(img, [512,512])

        mask = resize_img_keep_ratio(mask, [512,512])

        stk = np.hstack((img,mask))
        cv2.namedWindow("stk",0)
        cv2.imshow("stk",stk)
        if cv2.waitKey(1)==27:
            break

执行可视化示例如下:

​​

助力快速掌握数据集的信息和使用方式。

数据可以如此美好!

猜你喜欢

转载自blog.csdn.net/weixin_42140236/article/details/143372523