import cv2
import os
import numpy as np
def detect_face(img):
gray = cv2.cvtcolor(img, cv2.color_bgr2gray)
face_cascade = cv2.cascadeclassifier('haarcascade_frontalface_default.xml')
faces = face_cascade.detectmultiscale(gray, scalefactor=1.2, minneighbors=5);
if (len(faces) == 0):
return none, none
else:
(x, y, w, h) = faces[0]
return gray[y:y+w, x:x+h], faces[0]
def prepare_training_data(data_folder_path):
dirs = os.listdir(data_folder_path) #讀取儲存在路徑上的所有資料夾的名稱
faces=
labels=
for dir_name in dirs: #瀏覽每個目錄並閱讀其中的影象
if not dir_name.startswith("s"):
continue
label = int(dir_name.replace("s", ""))
subject_dir_path = data_folder_path + "/" + dir_name
subject_images_names = os.listdir(subject_dir_path)
for image_name in subject_images_names:
if image_name.startswith("."):
continue
image_path = subject_dir_path + "/" + image_name
image = cv2.imread(image_path)
#face, rect = detect_face(image)
face, rect = detect_face(image)
#cv2.imshow("training on image...", face)
#cv2.waitkey(100)
if face is not none:
return faces, labels
print("正在準備資料")
faces, labels = prepare_training_data("s")
#faces, labels = prepare_training_data("dataset")
print("資料完成,準備訓練資料")
#print total faces and labels
print("total faces: ", len(faces))
print("total labels: ", len(labels))
#create our lbph face recognizer
#face_recognizer = cv2.face.createlbphfacerecognizer()
recognizer = cv2.face.lbphfacerecognizer_create()
#recognizer = cv2.face.eigenfacerecognizer_create()
#recognizer = cv2.face.fishe***cerecognizer_create()
#or use eigenfacerecognizer by replacing above line with
#face_recognizer = cv2.face.createeigenfacerecognizer()
#or use fishe***cerecognizer by replacing above line with
#face_recognizer = cv2.face.createfishe***cerecognizer()
recognizer.train(faces, np.array(labels))
recognizer.write('lihao.yml') #定義生成檔案的名稱
print('資料訓練完成')
opencv 人臉識別 (二)訓練和識別
環境 vs2010 opencv 2.4.6.0 特徵 eigenface input 乙個人臉資料庫,15個人,每人20個樣本 左右 output 人臉檢測,並識別出每張檢測到的人臉。1.為訓練資料預處理 為灰度 對齊 歸一化 void resizeandtogray char dir,int k...
訓練模型 LBP演算法
lbp指區域性二值模式,英文全稱 local binary patterns。最初功能為輔助影象區域性對比度,並不是乙個完整的特徵描述子。中文名線性反投影演算法 外文名local binary patterns 簡 稱 lbp別 名 累加法屬 性 區域性二值模式 1 數字影象處理 2 介紹 3 演算...
opencv 人臉檢測 模型訓練 人臉識別
人臉檢測 模型訓練 人臉識別 2018 08 15 今天給大家帶來一套人臉識別乙個小案例,主要是幫助小夥伴們解決如何入門opencv人臉識別的問題,現在的ai行業比較火熱,ai技術的使用比較廣泛。就拿現在的只能手機來說吧,現在很多智慧型手機都必須有人臉識別解鎖 拍照自動美顏 拍照物體識別等等功能,這...