1. 程式人生 > >生成人臉檢測負樣本

生成人臉檢測負樣本

從sun資料集中選了幾百張沒有人的影象,用滑動視窗在這些圖片上裁出背景圖片作為人臉檢測的負樣本

有一個問題就是暫停後裁剪並沒有停下來,自己一直也沒注意。。。發現的時候裁剪的圖片已經把硬碟塞滿了


#人臉檢測負樣本生成
from PIL import Image
import os
#一個rec—width上滑動的步數
w_step=5
h_step=5

rec_width_list=[60,100,150,200]
rec_height_list=[70,120,180,240]

#裁剪影象並儲存
def crop_and_save(rec_width,rec_height,k):
    
    w_step_num=round((width-rec_width)/(rec_width/w_step))
    h_step_num=round((height-rec_height)/(rec_height/h_step))
    

    y1=0
    for i in range(h_step_num):
        x1=0
        i=i+1
        for j in range(w_step_num):
            j=j+1
            k=k+1
            img.crop((x1,y1,x1+rec_width,y1+rec_height)).resize((50,50)).save(r'E:\negtive_img_crops\{}.jpg'.format(k))
            x1=x1+rec_width/w_step
        y1=y1+rec_height/h_step
        
    return k

m=0
n=0
for dir,folder,file in os.walk(r'E:\negative_img'):
    
    for i in file:
        m=m+1
#輸出當前正在裁剪的圖片名及已裁剪張數
        print(i)
        print(m)
        
        img = Image.open(os.path.join(r'E:\negative_img',i))
#        轉為灰度圖
        img=img.convert('L')
        height=img.size[1]
        width=img.size[0]
        
        for i in range(len(rec_width_list)):
            rec_width=rec_width_list[i]
            rec_height=rec_height_list[i]
            
            n=crop_and_save(rec_width,rec_height,n)