专栏首页小鹏的专栏人脸检测——AFLW准备人脸

人脸检测——AFLW准备人脸

不多说了,直接代码吧:

生成AFLW_ann.txt的代码,其中包含图像名称 和 图像中人脸的位置(x,y,w,h);

** AFLW中含有aflw.aqlite文件。

import sqlite3

list_annotation = list()
# Format for saving: path x y w h
ann_format = "{}/{} {} {} {} {}"

conn = sqlite3.connect('aflw.sqlite')

fidQuery = 'SELECT face_id FROM Faces'
faceIDs = conn.execute(fidQuery)

for idx in faceIDs:

    fidQuery = 'SELECT file_id FROM Faces WHERE face_id = {}'.format(idx[0])
    imgID = conn.execute(fidQuery)
    imgID = [id for id in imgID]

    imgDataQuery = "SELECT db_id,filepath,width,height FROM FaceImages WHERE file_id = '{}'".format(imgID[0][0])
    fileID = conn.execute(imgDataQuery)
    fileID = [id for id in fileID]
    db_id = fileID[0][0]
    filepath = fileID[0][1]

    faceRectQuery = 'SELECT x,y,w,h FROM FaceRect WHERE face_id = {}'.format(idx[0])
    faceRect = conn.execute(faceRectQuery)
    faceRect = [id for id in faceRect]

    if len(faceRect)==0:
        continue
    
    x,y,w,h =  faceRect[0]

    list_annotation.append(ann_format.format(db_id,filepath,x,y,w,h))


with open("AFLW_ann.txt",'w') as f:
    f.writelines("%s\n" % line for line in list_annotation) 

AFLW图片都整理到flickr文件下(含0,1,2三个文件),生成人脸的程序(并且对人脸进行了左右镜像):

import os
from PIL import Image
from PIL import ImageFile
# ImageFile.LOAD_TRUNCATED_IMAGES = True
import cv2
import numpy as np

with open('AFLW_ann.txt','r') as f:
    lines = f.readlines()

save_dir1 = 'data_prepare/net_positive'
save_dir2 = 'data_prepare/net_positive_flip'

if os.path.exists(save_dir1)==False:
    os.makedirs(save_dir1)
if os.path.exists(save_dir2)==False:
    os.makedirs(save_dir2)

for idx, line in enumerate(lines):
    s1 = line.strip().split(' ')
    image_path = s1[0]
    x = int(s1[1])
    y = int(s1[2])
    w = int(s1[3])
    h = int(s1[4])
    print (image_path)
    # image = Image.open(image_path)
    image = cv2.imread(image_path)
    if image is None:
        continue
    if x<=0 and y<=0 and w<=0 and h<=0:
            continue
    box = (x, y, x+w, y+h)
    
    # patch = image.crop(box)
    patch = image[box[1]:box[3], box[0]:box[2], :]
    if patch is None:
        continue

    patch1 = patch #.resize((51, 51))
    # patch2 = patch1.transpose(Image.FLIP_LEFT_RIGHT)
    h = patch.shape[0]
    w = patch.shape[1] 
    iLR = patch.copy()
    for i in range(h):
       for j in range(w):
           iLR[i,w-1-j] = patch[i,j]
    patch2 = iLR

    s2 = image_path.split('/')
    image_name = s2[-1]

    save_path1 = save_dir1+'/'+str(idx)+image_name + '.jpg'
    save_path2 = save_dir2+'/'+'l'+str(idx)+image_name + '.jpg'

    #patch1.save(save_path1, 'jpeg')
    #patch2.save(save_path2, 'jpeg')
    cv2.imwrite(save_path1, np.array(patch1))
    cv2.imwrite(save_path2, np.array(patch2))

    print (idx)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • image——Data Augmentation的代码

    切片(crop): def crop(image, random_crop, image_size): if image.shape[1]>image_...

    MachineLP
  • 人脸检测——滑动窗口篇(训练和实现)

    人脸检测:cascade cnn,mtcnn,都可以通过下面代码复现。但是下面的实现是比较low的,后面更新FCN的方法。 注意mtcnn的标签加了回归框,训练...

    MachineLP
  • 刚开始玩openMP,总结一下遇到的一点小问题。

            首先,VS中设置步骤:         工程属性 —> C/C++ —> language 中的Open MP Suport中选择Yes 就OK...

    MachineLP
  • docker源码分析(3)---镜像 (2)

    第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

    月牙寂道长
  • leaf源码分析(一)----chanrpc

    版权声明:本文为作者原创,如需转载请通知本人,并标明出处和作者。擅自转...

    月牙寂道长
  • .net Core程序在Windows Server 2008发布

    今天在自己云服务器上测试发布.net core的程序,整整折腾了一下午,终于发布成功了,于是在这里记录下在Windows Server 2008 R2下发布的一...

    Vaccae
  • (case when length(p.name)>25 then concat(substring(p.name,1,12),'...') else p.name end) as projectN

    SELECT DISTINCT pw.project_id as projectId , (case when length(p.name)>25 then...

    一个会写诗的程序员
  • 扒源码 - 一个请求在flask中经历了什么

    客户端发起一个请求,Flask 都干了什么呢?url 如何与视图进行绑定的?更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

    小闫同学啊
  • Python 模拟Ajax/XMLHtt

    Ajax是目前流行的网页加载模式,可以不刷新网页页面实现数据更新。 ...

    py3study
  • tomcat启动分析 总结

    平凡的学生族

扫码关注云+社区

领取腾讯云代金券