Colaboratory에서 OpenCV를 사용하여 얼굴 인식을 시도합니다.

아래 준비



OpenCV 공식 GitHub 에서 배포된 계단식 분류기의 파일(haarcascade_frontalface_default.xml)을 DL로 두고 Colaboratory에 업로드합니다.
from google.colab import files #
f = files.upload() #ファイルアップロード

코드


import io
import numpy as np
import requests
import cv2
from matplotlib import pyplot as plt

# Web上の適当な画像を読み込む
res = requests.get('https://www.warnerbros.com/sites/default/files/styles/key_art_270x400/public/matrix_keyart.jpg')

bin_data = io.BytesIO(res.content)
file_bytes = np.asarray(bytearray(bin_data.read()), dtype=np.uint8)

img = cv2.imdecode(file_bytes, cv2.IMREAD_COLOR)

# OpenCV上はBGRフォーマットだが、matplotで表示するためにRGBフォーマットに変換する
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# 事前にアップロードした分類器ファイルを使用する
cascade = cv2.CascadeClassifier('./haarcascade_frontalface_default.xml')

# 分類器で検出
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
face = cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=3, minSize=(30, 30))

# 検出した領域を矩形で囲む
for (x, y, w, h) in face:
  cv2.rectangle(img, (x, y), (x + w, y + h), (200,0,0), 3)

# デフォルトだとグリッドとxy軸ラベルが表示されるので非表示にする
plt.grid(False)
plt.tick_params(labelbottom=False, labelleft=False, labelright=False, labeltop=False)
plt.imshow(img)

결과




좋은 웹페이지 즐겨찾기