如何在 Pascal Voc 语义分割任务中为标签图建立灰度图索引

上图是voc语义分割的图片,下图是来自陈洪翰大佬文章中的索引表。

直接放代码:

import os
import cv2
import numpy as np
from matplotlib import pyplot as plt
from PIL import Image

# 建立索引
pixel_index = np.zeros((4,4,4))
pixel_index[0,0,0]=0
pixel_index[2,0,0]=1
pixel_index[0,2,0]=2
pixel_index[2,2,0]=3
pixel_index[0,0,2]=4
pixel_index[2,0,2]=5
pixel_index[0,2,2]=6
pixel_index[2,2,2]=7
pixel_index[1,0,0]=8
pixel_index[3,0,0]=9
pixel_index[1,2,0]=10
pixel_index[3,2,0]=11
pixel_index[1,0,2]=12
pixel_index[3,0,2]=13
pixel_index[1,2,2]=14
pixel_index[3,2,2]=15
pixel_index[0,1,0]=16
pixel_index[2,1,0]=17
pixel_index[0,3,0]=18
pixel_index[2,3,0]=19
pixel_index[0,1,2]=20
pixel_index[3,3,3]=21
pixel_index.astype(np.int32)

img_list = os.listdir('./VOC2012/SegmentationClass')
for img_name in img_list:
    img = cv2.imread('./VOC2012/SegmentationClass/'+img_name)
    # img = Image.open('./VOC2012/SegmentationClass/'+img_name)
    img = np.array(img)
    img = img/64  
    img = img[:,:,::-1]
    img = img.astype(np.int32)
    new_img = np.zeros(img.shape[:2])
    for x in range(img.shape[0]):
        for y in range(0,img.shape[1]):
            r,g,b = img[x][y]
            new_img[x][y] = pixel_index[r,g,b]
    new_img = new_img.astype(np.uint8)
    cv2.imwrite('/home/aistudio/work/datas/VOCdevkit/VOC2012/Segmen/'+img_name,new_img)

posted @   人间别久不成悲  阅读(71)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示