FDDB人臉資料集/python影象批量處理
阿新 • • 發佈:2018-12-17
將FDDB圖片中人臉擷取後並儲存的結果為 正好5157個標註出的人臉
1.簡介 FDDB,最具權威的人臉檢測評測平臺之一,包含2845張圖片,共有5171個人臉作為測試集。測試集範圍包括:不同姿勢、不同解析度、旋轉和遮擋等圖片,同時包括灰度圖和彩色圖,標準的人臉標註區域為橢圓形。 圖片來源:美聯社和路透社新聞報道圖片,並刪除了重複圖片 2.人臉標註方式 以橢圓來標註人臉位置,標註的結果如下: 第一個為圖片的存放位置,第二個為圖片中人臉的數量,第三個為人臉的位置等資訊 每個標註的橢圓形人臉由六個元素組成 (ra, rb, Θ, cx, cy, s) ra,rb:半長軸、半短軸 cx, cy:橢圓中心點座標 Θ:長軸與水平軸夾角(頭往左偏Θ為正,頭往右偏Θ為負) s:置信度得分
3.批量擷取人臉
from PIL import Image import matplotlib.pyplot as plt filename=(r'C:\Users\Administrator\Desktop\dataset\FDDB\FDDB-folds\FDDB-folds\FDDB-fold-01-ellipseList.txt') data_list=[] with open(filename) as f: for line in f.readlines(): line=line.strip('\n') lst=line.split(' ')#將str轉換為列表 data_list.append(lst) image_path=[] face_num=[] face_xy=[] i=0 #將圖片的存放位置,人臉數目,人臉位置分別存放在三個list中 while i < len(data_list): image_path.append(data_list[i][0]) face_num.append(data_list[i+1][0]) for n in range(int(data_list[i+1][0])): face_xy.append(data_list[i+n+2]) i=i+int(data_list[i+1][0])+2 #擷取人臉的範圍的大小 a=1.2 k=0 n=0 while k <len(image_path): path=r'C:\Users\Administrator\Desktop\dataset\FDDB\originalPics\{}.jpg'.format(image_path[k]) img=Image.open(path) j=0 while j <int(face_num[k]): n=n+1 # 儲存擷取的人臉的路徑 save_path=r'C:\Users\Administrator\Desktop\dataset\faces\{}.jpg'.format(n) xy=face_xy.pop(0) #FDDB中給出的人臉位置標註是以橢圓形式給出的,根據橢圓的中心位置以及短軸、長軸的長度算出人臉框位置 x1=int(float(xy[3]))-a*int(float(xy[1])) y1=int(float(xy[4]))-a*int(float(xy[0])) x2=int(float(xy[3]))+a*int(float(xy[1])) y2=int(float(xy[4]))+a*int(float(xy[0])) box=(x1,y1,x2,y2) img_cut=img.crop(box) img_cut.save(save_path) # plt.imshow(img_cut) # plt.show() j=j+1 k=k+1