1128
[15주차 - Day3] Visual Recognition
Object Detection
# OpenCV, FaceDetection 실습 코드 정리
OpenCV 비디오 영상 처리
import cv2
# https://drive.google.com/file/d/1KM-J0nqm3mKudX2epgVHhB3y8ieglkAA/view?usp=sharing
video_input_path = "/content/drive/My Drive/Colab Notebooks/programmers/YOLO.mp4"
# linux에서 video output의 확장자는 반드시 avi 로 설정 필요.
video_output_path = "/content/drive/My Drive/Colab Notebooks/programmers/YOLO.avi"
cap = cv2.VideoCapture(video_input_path)
# Codec은 *'XVID'로 설정.
codec = cv2.VideoWriter_fourcc(*'XVID')
vid_size = (round(cap.get(cv2.CAP_PROP_FRAME_WIDTH)),round(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))) #(200, 400)
vid_fps = cap.get(cv2.CAP_PROP_FPS )
vid_writer = cv2.VideoWriter(video_output_path, codec, vid_fps, vid_size)
frame_cnt = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))
print('총 Frame 갯수:', frame_cnt, 'FPS:', round(vid_fps), 'Frame 크기:', vid_size)
import time
green_color=(0, 255, 0)
red_color=(0, 0, 255)
start = time.time()
index=0
while True:
hasFrame, img_frame = cap.read()
if not hasFrame:
print('더 이상 처리할 frame이 없습니다.')
break
index += 1
print('frame :', index, '처리 완료')
cv2.rectangle(img_frame, (300, 100, 800, 400), color=green_color, thickness=2)
caption = "frame:{}".format(index)
cv2.putText(img_frame, caption, (300, 95), cv2.FONT_HERSHEY_SIMPLEX, 0.7, red_color, 1)
vid_writer.write(img_frame)
print('write 완료 시간:', round(time.time()-start,4))
vid_writer.release()
cap.release()
FaceDetection
# 밑의 코드는 google colab에서 OpenCV로 face detection하고자 하기 위한 utils모듈을 사용하기 위해 필요함.
# install pnslib
!pip install git+git://github.com/PnS2019/pnslib.git
!wget https://pns2019.github.io/images/Lenna.png
import cv2
from pnslib import utils
import matplotlib.pyplot as plt
# read image
img = cv2.imread("Lenna.png")
# load face cascade and eye cascade
face_cascade = cv2.CascadeClassifier(
utils.get_haarcascade_path('haarcascade_frontalface_default.xml'))
eye_cascade = cv2.CascadeClassifier(
utils.get_haarcascade_path('haarcascade_eye.xml'))
# search face
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
roi_gray = gray[y:y+h, x:x+w]
roi_color = img[y:y+h, x:x+w]
eyes = eye_cascade.detectMultiScale(roi_gray)
for (ex, ey, ew, eh) in eyes:
cv2.rectangle(roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.figure()
plt.imshow(img)
plt.show()
'프로그래머스 데브 코스 > TIL' 카테고리의 다른 글
[6기] 프로그래머스 인공지능 데브코스 92일차 TIL (1) | 2023.12.01 |
---|---|
[6기] 프로그래머스 인공지능 데브코스 91일차 TIL (1) | 2023.11.30 |
[6기] 프로그래머스 인공지능 데브코스 89일차 TIL (0) | 2023.11.28 |
[6기] 프로그래머스 인공지능 데브코스 88일차 TIL (1) | 2023.11.27 |
[6기] 프로그래머스 인공지능 데브코스 87일차 TIL (0) | 2023.11.26 |