想要作人脸截取的话,须要用到CV2这个包,他是基于openCV的,因此须要安装opencv。以上就是环境准备工做啦,你本身把平台弄好,就能够时实践了。html
首先感谢这位博主,我是参考他的代码来的。还找到一个对动漫人脸进行识别的,可是我本身没有调试出来,若是有兴趣大家能够试试,告诉我结果。 人脸识别 好用,还有其余函数 动漫人脸识别 动漫人脸python
**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) -