任务需求:
遍历PATH目录下的文件,若遇到名称为label.png的文件,则将这个图像中像素值为[0, 0, 128]的区域替换为像素值为1的灰度图。
import numpy as np
import cv2
from ptsemseg.utils import recursive_glob
import os
def changecolor(color):
diffuse_color = np.array([0, 0, 128])
diffuse_gray = 0
if (color == diffuse_color).all():
diffuse_gray = 1
return diffuse_gray
root = "PATH"
file_list = recursive_glob(
rootdir=root, suffix=".png"
)
labelname = "label.png"
for file in file_list:
file = file.replace('\\', '/')
Filename = file.split('/')[-1] #提取图像名称
# 取出字符串里的数字
# num_filter = filter(str.isdigit, lastFilePath)
# num_list = list(num_filter)
# num_str_lastFilePath = "".join(num_list)
if Filename == labelname:
img = cv2.imread(root + lastFilePath + "/" + Filename)
new_annotation = np.zeros((img.shape[0], img.shape[1], 1), np.uint8)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
new_annotation[i, j] = changecolor(img[i, j])
cv2.imwrite(root + Filename + ".png", new_annotation)