做法可能沒有很聰明,行使 os.walk把該資料夾中的各類格局的圖像名稱儲存成 list,再行使迴圈對圖像一個個辨識。
無論原圖解析度若何,全都會輸出同一的格式,輸出的圖象如下。
- import cv2
-
- face_cascade = cv2.CascadeClassifier('./cascades/haarcascade_frontalface_default.xml')
- eye_cascade = cv2.CascadeClassifier('./cascades/haarcascade_eye.xml')
-
- face_filename = 1
- def detect(filename):
- img = cv2.imread(filename)
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- faces = face_cascade.detectMultiScale(gray,
- scaleFactor=1.2,
- minNeighbors=3,)
- for (x,y,w,h) in faces:
- roi_gray = gray[y:y+h, x:x+w]
- eyes = eye_cascade.detectMultiScale(roi_gray,
- scaleFactor=1.02,
- minNeighbors=3,)
- if len(eyes)>=2:
- f = cv2.resize(gray[y:y+h, x:x+w], (200, 200))
- global face_filename
- name = './face/%d.png' % face_filename
- cv2.imwrite(name, f)
- face_filename += 1
- else:
- pass
- print('Working with %s' % filename)
複製代碼
行使 cv2.CascadeClassifier導入辨識工具,此中選擇了面部和眼睛的辨識東西。
讀取圖像數據後,轉為灰階,哄騙detectMultiScale做面部和眼睛的辨識。
detectMultiScale中的數據參數分別是
- import os
-
- img_list = []
- for fileNames in os.walk("."):
- filename_extension = ['.jpg', '.png', '.jpeg', '.JPG', '.gif']
- for fe in filename_extension:
- for fileName in fileNames[-1]:
- if fileName.endswith(fe):
- img_list.append(fileName)
-
- for img in img_list:
- detect(img)
複製代碼
- 圖片數據
- ScaleFactor:每次搜索方塊削減的比例
- minNeighbers:每一個方針最少檢測到幾回以上,才可被認定是真數據。
- minSize:設定命據搜索的最小尺寸 ,如 minSize=(40,40)

子瑜女神看來起來辨識滿成功的。
接著看看失敗的例子,用了一樣的參數辨識一下 Twice和愉快伙伴們?




看來挺失敗的,娜璉和此中兩位興奮伙伴完全沒有辨識出臉,眼睛的部分大多都沒有辨識成功。為了辨識成功,可能需要調劑一下參數。至於如何避免 OpenCV混淆眼睛和嘴,本人目前沒有對策,求高手指導。不外還好集團照不是我要辨識的主要方針。
接著修改 detect,把辨識出的臉,另存為供 AI訓練的圖象。
Python OpenCV 面部數據


2021-11-23 22:51 上傳





