想要作人臉截取的話,須要用到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) -