如何在 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)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理