FDDB人脸数据集/python图像批量处理

将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

将这5000多人脸和一些对人脸的描述信息生成tfrecord文件的代码见下一篇创建TFRecord

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值