小黑深度學習之路——圖片爬取+人臉識別截取

環境: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)
-
相關文章
相關標籤/搜索