python实现数据集中去除某label(涂掉)
背景:在处理数据集时想做图片isp操作,但是用别人的接口时规定图片中只能有一个标签,而现有数据集每张图片有两个标签(为了丰富样本,每张图片含两个样本,所以标了两个框)于是需要把其中一个框处理掉,处理方式为将这块区域涂上某个固定像素的值,从而抹去
import numpy as np
from PIL import Image
import random
import glob
import os
def getRandArr():
'''返回随机颜色数组'''
return np.full((1, 3), random.randint(0, 255))
def method1(block, start, end,file,file_name):#
im1 = np.array(Image.open(file))
for i in range(start[0], start[1], block):
for j in range(end[0], end[1],block):
im1[i:i + block, j:j + block] = im1[200][200]#全涂上200,200这个像素点
im2 = Image.fromarray(im1.astype("uint8"))
im2.save("D:\erweima-data\\0515\\images_mirror\\"+file_name)
#method1(20, (50, 50+115), (492,492+119))
file = open("E:\erweima-data\\0515\\0731.txt")
cout=0
list1 = []
list2 = []
list3 = []
list4 = []
for line in file:
line=line.strip('\n')
if(cout%3==2):
strlist = line.split('-')
a,b,c,d=map(int,strlist[0].split())
list1.append(a)
list2.append(b)
list3.append(c)
list4.append(d)
cout=cout+1
cout=0
for root,dirs_name,files_name in os.walk("E:\erweima-data\\0515\\images_mirror"):
for i in files_name:
img_name = i.split('.')[0] + '.' + i.split('.')[1]
file_name = os.path.join(root, i)
method1(20,(list2[cout]-3,list2[cout]+list4[cout]+3),(list1[cout]-3,list1[cout]+list3[cout]+3),file_name,img_name)
#print(file_name)
cout=cout+1