Face Detection
이미지 내 얼굴을 감지해보자.
Basic
import cv2
# if you use colab, type above code.
from google.colab.patches import cv2_imshow
데이터 가져오기
image = cv2.imread(".jpg")
image.shape # (1280, 1920, 3)
이미지 보기
cv2_imshow(image)
사이즈가 크다. resize 메소드를 사용해서 줄여보자.
# 800,600 사이즈로 조절
image = cv2.reszie(image, (800,600))
image.shape # (600,800,3)
이미지를 회색으로 변경해보자.
# RGB -> BGR 순으로 입력해야한다.
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2_imshow(image_gray)
# gray scale로 변경하면 RGB 채널이 없어진다.
image.shape # (600,800,3)
image_gray.shape # (600,800)
Detecting faces
본격적으로 이미지 내 얼굴을 탐지해보자. 사전에 학습된 분류기를 가져와서 사용한다.
# 사전에 학습된 분류기
face_detector = cv2.CascadeClassifier(".xml")
# detectMultiScale 메소드 사용
detections = face_detector.detectMultiScale(image_gray)
detections
첫 번째 행부터 보면, 677, 72는 x,y 좌표(시작점)고, 좌상단에 찍힌다. 68, 68은 각각 x축 오른쪽으로 쭈욱, y축 아래로 쭈욱. 중요한 건, y값이 양수면 아래쪽으로 이동한다.
이제, 경계 박스를 그려보자.
for (x, y, w, h) in detections:
cv2.rectangle(image, (x,y), (x + w, y + h), (0, 255, 0 ), thickness=3)
cv2_imshow(image)
- (0,255,0) -> 초록색
- thickness -> 박스 경계 두께
다른 사진 활용
# people2 image
image = cv2.imread('people2.jpg')
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# minNeighbors는 경계 박스가 주변에 최소한 몇 개가 있어야 하는지 지정
# min,max Size는 각각 경계 박스 최소, 최대 크기
detections = face_detector.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=7,
minSize=(20,20), maxSize=(100,100))
for (x, y, w, h) in detections:
print(w, h)
cv2.rectangle(image, (x,y), (x + w, y + h), (0, 255, 0 ), thickness=3)
cv2_imshow(image)
위 코드에서 ScaleFactor는 꼭 알아둬야 한다. 이미지에서 먼 거리에 있는 얼굴은 작게 보이고, 가까이에 있는 얼굴은 크게 보인다. 디폴트 값은 1.1인데 이 값보다 작게 설정하면 좀 더 작은 얼굴까지 탐지한다. 반대로 크게 하면 더 큰 얼굴을 탐지하게 되고 작은 얼굴은 탐지할 수 없게 된다. 이 값은 최상의 결과가 나올 때까지 반복한다.
udemy 에서 배운 것들을 기록하며, 수익 창출은 일체 없습니다.
'DL > Computer Vision' 카테고리의 다른 글
Computer Vision - [얼굴 인식 2 (Face Recogintion using dlib, shape predictor 68 face landmarks)] (0) | 2024.02.07 |
---|---|
Computer Vision - [얼굴 인식 (Face Recogintion)] (1) | 2024.02.01 |
Computer Vision - [Fruit and Vegetable Classification] (1) | 2024.01.29 |
Computer Vision - [CNN (Convolutional Neural Network)] (1) | 2024.01.26 |
Computer Vision - [HOG (Histogram of Oriented Gradient)] (0) | 2024.01.26 |