小黑深度学习之路——图片爬取+人脸识别截取

环境:Windows7+64位,pycharm,Anaconda2(python集成管理环境),opencv

想要作人脸截取的话,须要用到CV2这个包,他是基于openCV的,因此须要安装opencv。以上就是环境准备工做啦,你本身把平台弄好,就能够时实践了。html

代码(干货来了!)

首先感谢这位博主,我是参考他的代码来的。还找到一个对动漫人脸进行识别的,可是我本身没有调试出来,若是有兴趣大家能够试试,告诉我结果。 人脸识别 好用,还有其余函数 动漫人脸识别 动漫人脸python

注意:haarcascade_frontalface_default.xml这个文件是已经训练好的人脸识别集,我放到我百度云里,须要自取吧。(隔天过来放)

**图片爬取:

**json

- #coding=utf-8
- import requests
- import os
- import sys
- defaultencoding = 'utf-8'
- if sys.getdefaultencoding() != defaultencoding:
-     reload(sys)
-     sys.setdefaultencoding(defaultencoding)
- def getManyPages(keyword,pages):
-     params=[]
-     for i in range(30,30*pages+30,30):
-         params.append({
-                       'tn': 'resultjson_com',
-                       'ipn': 'rj',
-                       'ct': 201326592,
-                       'is': '',
-                       'fp': 'result',
-                       'queryWord': keyword,
-                       'cl': 2,
-                       'lm': -1,
-                       'ie': 'utf-8',
-                       'oe': 'utf-8',
-                       'adpicid': '',
-                       'st': -1,
-                       'z': '',
-                       'ic': 0,
-                       'word': keyword,
-                       's': '',
-                       'se': '',
-                       'tab': '',
-                       'width': '',
-                       'height': '',
-                       'face': 0,
-                       'istype': 2,
-                       'qc': '',
-                       'nc': 1,
-                       'fr': '',
-                       'pn': i,
-                       'rn': 30,
-                       'gsm': '1e',
-                       '1488942260214': ''
-                   })
-     url = 'https://image.baidu.com/search/acjson'
-     urls = []
-     for i in params:
-         urls.append(requests.get(url,params=i).json().get('data'))
- 
-     return urls
- 
- 
- def getImg(dataList, localPath):
- 
-     if not os.path.exists(localPath):  # 新建文件夹
-         os.mkdir(localPath)
- 
-     x = 0
-     for list in dataList:
-         for i in list:
-             if i.get('thumbURL') != None:
-                 print('正在下载:%s' % i.get('thumbURL'))
-                 ir = requests.get(i.get('thumbURL'))
-                 open(localPath + '%d.jpg' % x, 'wb').write(ir.content)
-                 x += 1
-             else:
-                 print('图片连接不存在')
- 
- if __name__ == '__main__':
-     dataList = getManyPages('冯雷',10)  # 参数1:关键字,参数2:要下载的页数
-     getImg(dataList,'E:/hao1/picture/') # 参数2:指定保存的路径

**人脸识别并截取

**app

#-*-coding:utf8-*-#


- import os
- import cv2
- import glob
- from PIL import Image,ImageDraw
- 
- #detectFaces()返回图像中全部人脸的矩形坐标(矩形左上、右下顶点)
- #使用haar特征的级联分类器haarcascade_frontalface_default.xml,在haarcascades目录下还有其余的训练好的xml文件可供选择。
- #注:haarcascades目录下训练好的分类器必须以灰度图做为输入。
- def detectFaces(image_name):
-     img = cv2.imread(image_name)
-     face_cascade = cv2.CascadeClassifier("D:\people_picture\haarcascade_frontalface_default.xml")
-     if img.ndim == 3:
-         gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
-     else:
-         gray = img #if语句:若是img维度为3,说明不是灰度图,先转化为灰度图gray,若是不为3,也就是2,原图就是灰度图
- 
-     faces = face_cascade.detectMultiScale(gray, 1.2, 5)#1.3和5是特征的最小、最大检测窗口,它改变检测结果也会改变
-     result = []
-     for (x,y,width,height) in faces:
-         result.append((x,y,x+width,y+height))
-     return result
- 
- 
- #保存人脸图
- def saveFaces(image_name,j):
-     faces = detectFaces(image_name)
-     if faces:
-         #将人脸保存在save_dir目录下。
-         #Image模块:Image.open获取图像句柄,crop剪切图像(剪切的区域就是detectFaces返回的坐标),save保存。
-         #save_dir = image_name.split('.')[0]+"_faces"
-         save_dir='D:\people_picture\pic'
-         #os.mkdir(save_dir)
-         #count = 0
-         for (x1,y1,x2,y2) in faces:
-             file_name = os.path.join(save_dir,str(j)+".jpg")
-             Image.open(image_name).crop((x1,y1,x2,y2)).save(file_name)
-             #count+=1
- 
- 
- 
- 
- if __name__ == '__main__':
-    file_list = glob.glob('D:\people_picture\pic\*.jpg')
-    j=0
-    for filename in file_list:
-         j+=1
-         detectFaces(filename)
-         saveFaces( filename,j)
-
相关文章
相关标签/搜索