【Python学习】下载faceScrub人脸数据库(单线程版本)



faceScrub 数据库是一个公共的名人人脸数据库,其相对与其他的数据库来说,优点是图像比较多,而且清晰度比较好,共有 107,818 张人脸图像, 涵盖530 个名人, 每个人大约200张图片。


居于版权的信息,该数据只提供了图片的链接,没有提供图片本身,跟另外一个数据库PubFig类似,所以我们需要自己写脚本来完成这个图像提取的功能。


这个数据库的文件在这里:http://vintage.winklerbros.net/facescrub.html 下载,文件不大,压缩后的大小只有8M多。


文件格式如下

name	image_id	face_id	url	bbox	sha256
Aaron Eckhart	1	1	http://upload.wikimedia.org/wikipedia/commons/5/5d/AaronEckhart10TIFF.jpg	53,177,418,542	dec996994cf1eec33b53c203cff0e8f25638829fa2ad71bb0307d308fa11cdac
Aaron Eckhart	2	2	http://movies.dosthana.com/sites/default/files/image-gallery/Aaron-Eckhart-Image.jpg	80,102,260,282	f84d0c3b1b854a51e6bc031bc353e801834e81df795e85ec1589ca895fb7c1ae
Aaron Eckhart	3	3	http://upload.wikimedia.org/wikipedia/commons/5/52/Aaron_Eckhart_-_002.jpg	203,802,975,1574	8548658ef00f2ac4c384fbfff9d3ae225b4b9e0c2aa45e79a97420381c0f84c9
Aaron Eckhart	4	4	http://25.media.tumblr.com/nJ2vga5sae9o2ks4FltK2lYvo1_400.jpg	62,90,231,259	658d83f35859d2f313ff660c1900427c21eae1c41e3035307428f62b645e64d7
Aaron Eckhart	5	5	http://upload.wikimedia.org/wikipedia/commons/5/5e/Aaron-Eckhart-Traveling.jpg	276,120,492,336	1fa14fed3371280e8785df42cdc5d0335e7923a38f1b0632e3b88a52e850825f
Aaron Eckhart	6	6	http://media.zenfs.com/en_us/Movies/PhotoG/2nd-annual-ampas-governors-awards-2010-aaron-eckhart-53335.jpg	235,158,540,463	121e8bea5caae215b537dc116534bbd2fa7a9a60c1910764d78794ec185aa527
Aaron Eckhart	7	7	http://img2.timeinc.net/people/i/2008/news/080804/aaron_eckhart.jpg	60,57,178,175	bb2e227a9420d6325b67974231d334fc4620e807543a16030d51b35fa8a092f3

所以我们可以很容易的采用提取文本的方法直接去读取和存储图像。


由于最近在学习Python,就用python来完成这个功能吧。


直接贴代码吧。

# -*- coding: utf-8 -*-
"""
Created on Tue Apr 07 15:28:53 2015

@author: Chenriwei
"""

import os
import re
import time
import urllib

def get_all_iamge(filename):
    fid=open(filename)
    lines=fid.readlines()
    for line in lines:
        line_split=line.split('\t')
        name=line_split[0]
        image_id=line_split[1]
        face_id=line_split[2]
        box=line_split[4]
        image_url=line_split[3]
        print image_url+'\n'
        print box+'\n'
        if False == os.path.exists(name):
            os.mkdir(name)
        
        try:
         urlopen=urllib.URLopener()
         fp = urlopen.open(image_url)
         data = fp.read()
         fp.close()
         file=open(name+'/'+image_id+'.jpg','w+b')
         file.write(data)
         print "下载成功:"+ image_url
         file.close()
        except IOError:
         print "下载失败:"+ image_url

if __name__ == "__main__":
    get_all_iamge('facescrub_actors.txt')

当然这里有个不足之处,是只采用了单线程,所以很慢,下载一个人的图像都要好久。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值