python实现数据集中去除某label(涂掉)

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]#全涂上200200这个像素点
    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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值