๐Ÿ˜Lbp Face1 Collect

import cv2
import numpy as np
import os 

# ๋ณ€์ˆ˜ ์„ค์ • ---โ‘ 
base_dir = './faces/'   # ์‚ฌ์ง„ ์ €์žฅํ•  ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ
target_cnt = 400        # ์ˆ˜์ง‘ํ•  ์‚ฌ์ง„ ๊ฐฏ์ˆ˜
cnt = 0                 # ์‚ฌ์ง„ ์ดฌ์˜ ์ˆ˜

# ์–ผ๊ตด ๊ฒ€์ถœ ๋ถ„๋ฅ˜๊ธฐ ์ƒ์„ฑ --- โ‘ก
face_classifier = cv2.CascadeClassifier(\
                    './data/haarcascade_frontalface_default.xml')

# ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ ๋ฐ›์•„ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ---โ‘ข
name = input("Insert User Name(Only Alphabet):")
id = input("Insert User Id(Non-Duplicate number):")
dir = os.path.join(base_dir, name+'_'+ id)
if not os.path.exists(dir):
    os.mkdir(dir)

# ์นด๋ฉ”๋ผ ์บก์ณ 
cap = cv2.VideoCapture(0)
while cap.isOpened():
    ret, frame = cap.read()
    if ret:
        img = frame.copy()
        gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
        # ์–ผ๊ตด ๊ฒ€์ถœ --- โ‘ฃ
        faces = face_classifier.detectMultiScale(gray, 1.3, 5)
        if len(faces) == 1:
            (x,y,w,h) = faces[0]
            # ์–ผ๊ตด ์˜์—ญ ํ‘œ์‹œ ๋ฐ ํŒŒ์ผ ์ €์žฅ ---โ‘ค
            cv2.rectangle(frame, (x,y), (x+w, y+h), (0,255,0), 1)
            face = gray[y:y+h, x:x+w]
            face = cv2.resize(face, (200, 200))
            file_name_path = os.path.join(dir,  str(cnt) + '.jpg')
            cv2.imwrite(file_name_path, face)
            cv2.putText(frame, str(cnt), (x, y), cv2.FONT_HERSHEY_COMPLEX, \
                             1, (0,255,0), 2)
            cnt+=1
        else:
            # ์–ผ๊ตด ๊ฒ€์ถœ์ด ์—†๊ฑฐ๋‚˜ 1์ด์ƒ ์ธ ๊ฒฝ์šฐ ์˜ค๋ฅ˜ ํ‘œ์‹œ ---โ‘ฅ
            if len(faces) == 0 :
                msg = "no face."
            elif len(faces) > 1:
                msg = "too many face."
            cv2.putText(frame, msg, (10, 50), cv2.FONT_HERSHEY_DUPLEX, \
                            1, (0,0,255))
        cv2.imshow('face record', frame)
        if cv2.waitKey(1) == 27 or cnt == target_cnt: 
            break
cap.release()
cv2.destroyAllWindows()      
print("Collecting Samples Completed.")