250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- linux명령어
- php
- 독후감
- 나만의주식5법칙
- todolist
- 중용
- 헬레나크로닌
- OpenCV
- Face Detection
- Git
- 공작과개미
- 지방사람이보는서울사람
- Python
- db
- 클라우드
- 꼭읽어봐야할책
- UPSERT
- 비밀번호변경
- ChatGPT
- 옹졸함
- 성선택
- MySQL
- delete
- 다산의마지막습관
- 훌륭한모국어
- 일일투자금액
- git 업로드
- 네인생우습지않다
- 서울로가자
- Django
Archives
- Today
- Total
Terry Very Good
[Object Detection] 4. 영상을 이용한 얼굴/눈인식 본문
728x90
반응형
1. 간단한 이론
영상을 미리세컨드 기준으로 image로 읽어서, 해당 이미지의 face detection을 진행시킨다.
GPU를 사용하지 않기때문에 버퍼링이 걸리고, 라즈베리 파이 등을 사용하면 더 걸린다.
영상이기때문에 q를 누르면 종료되는 식으로 만들었다.
haar로 detection할 경우에는 얼굴을 정면으로 똑바로 보지 않을 경우 등에 대한 인식률이 많이 떨어진다. 차근차근 다른 모델들도 사용해보면서 이러한 정확도들을 높여보자.
GAN을 이용해서 오바마가 이상한 연설을 하게끔 만들기도 하고 했다더라.. 내가 다음 배우려고하던 것이 GAN이었는뎅 ㅎㅎ
2. GUI를 활용한 이미지를 이용한 얼굴/눈인식
- Library 다운로드
pip install Pillow
- 결과 및 코드
import cv2
import numpy as np
data_root = 'D:/Computer Vision/opencv_dnn_202005/video/';
data_root2 = 'D:/Computer Vision/opencv_dnn_202005/video';
cascade_root = 'D:/Computer Vision/ai_cv/haarcascades/';
file_name = data_root+"son_01.mp4"
title_name = 'Haar cascade object detection'
frame_width = 500
face_cascade_name = cascade_root+'haarcascade_frontalface_alt.xml'
eyes_cascade_name = cascade_root+'haarcascade_eye_tree_eyeglasses.xml'
def detectAndDisplay(frame): # 선택한 파일을 사용하여 Face Detection하고 보여주는 함수
frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
frame_gray = cv2.equalizeHist(frame_gray)
#-- Detect faces
faces = face_cascade.detectMultiScale(frame_gray)
for (x,y,w,h) in faces:
center = (x + w//2, y + h//2)
frame = cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 4)
faceROI = frame_gray[y:y+h,x:x+w]
#-- In each face, detect eyes
eyes = eyes_cascade.detectMultiScale(faceROI)
for (x2,y2,w2,h2) in eyes:
eye_center = (x + x2 + w2//2, y + y2 + h2//2)
radius = int(round((w2 + h2)*0.25))
frame = cv2.circle(frame, eye_center, radius, (255, 0, 0 ), 4)
cv2.imshow('Capture - Face detection', frame)
face_cascade = cv2.CascadeClassifier()
eyes_cascade = cv2.CascadeClassifier()
#-- 1. Load the cascades
if not face_cascade.load(cv2.samples.findFile(face_cascade_name)):
print('--(!)Error loading face cascade')
exit(0)
if not eyes_cascade.load(cv2.samples.findFile(eyes_cascade_name)):
print('--(!)Error loading eyes cascade')
exit(0)
#-- 2. Read the video stream
cap = cv2.VideoCapture(file_name)
if not cap.isOpened:
print('--(!)Error openiong video capture')
exit(0)
while True:
ret, frame = cap.read()
if frame is None:
print('--(!) No captured frame -- Break!')
break
detectAndDisplay(frame)
# Hit 'a' an the keyboard to quit!
if cv2.waitKey(1) & 0xFF == ord('q'): #q를 입력하면 종료
break
728x90
반응형
'신기술 습득' 카테고리의 다른 글
PDF에서 스크린샷찍은 것을 아웃룩 메일에 붙여넣는 2가지 방법 (0) | 2023.03.08 |
---|---|
[Cloud 기초]-1 Cloud 이론에 대한 모든 것 (0) | 2022.06.25 |
[Object Detection] 3. GUI를 활용한 이미지를 이용한 얼굴/눈인식 (0) | 2021.09.05 |
[Object Detection] 2. 이미지를 이용한 얼굴/눈인식 (0) | 2021.09.05 |
[Object Detection] 1. OpenCV 기초(영상처리) 지식 학습 (0) | 2021.09.03 |