人脸检测——AFLW准备人脸

不多说了,直接代码吧:

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

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


importsqlite3

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)

foridxinfaceIDs:

fidQuery ='SELECT file_id FROM Faces WHERE face_id = {}'.format(idx[0])

imgID = conn.execute(fidQuery)

imgID = [idforidinimgID]

imgDataQuery ="SELECT db_id,filepath,width,height FROM FaceImages WHERE file_id = '{}'".format(imgID[0][0])

fileID = conn.execute(imgDataQuery)

fileID = [idforidinfileID]

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 = [idforidinfaceRect]

iflen(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"% lineforlineinlist_annotation)

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


importos

fromPILimportImage

fromPILimportImageFile

# ImageFile.LOAD_TRUNCATED_IMAGES = True

importcv2

importnumpy 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'

ifos.path.exists(save_dir1)==False:

os.makedirs(save_dir1)

ifos.path.exists(save_dir2)==False:

os.makedirs(save_dir2)

foridx, lineinenumerate(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)

ifimageisNone:

continue

ifx<=0andy<=0andw<=0andh<=0:

continue

box = (x, y, x+w, y+h)

# patch = image.crop(box)

patch = image[box[1]:box[3], box[0]:box[2], :]

ifpatchisNone:

continue

patch1 = patch#.resize((51, 51))

# patch2 = patch1.transpose(Image.FLIP_LEFT_RIGHT)

h = patch.shape[0]

w = patch.shape[1]

iLR = patch.copy()

foriinrange(h):

forjinrange(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)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 人脸识别,基于人脸部特征信息识别身份的生物识别技术。摄像机、摄像头采集人脸图像或视频流,自动检测、跟踪图像中人脸,...
    利炳根阅读 5,837评论 0 1
  • 《裕语言》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 28,376评论 5 19
  • 《ilua》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 1...
    叶染柒丶阅读 13,782评论 0 11
  • 1、个性化推荐的算法不准确,推荐的内容和标签不符合,例如偏好中选择“人文”,推荐的top10条结果中有8条不属于人...
    小皮皮高高阅读 4,940评论 0 2
  • 昨天晚上站在天台给妈妈打电话,秋天的晚风吹出许多清晰的凉意,被秋风包裹的凉意仿佛带了一种天地广阔而苍茫的孤单与寂寥...
    三更笙阅读 3,434评论 0 4