画像で顔を識別する


😀 OpenCVのインストール

sudo apt update
sudo apt install python3-opencv

😀 画像出力


画像の読み取りと表示

import cv2

img=cv2.imread('photo.jpg')

cv2.imshow('photo', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

白黒画像に変換

import cv2

img=cv2.imread('photo.jpg')
gray=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

cv2.imshow('photo', gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

😀 人の顔を見分ける


Haar Cascadeマシンラーニングフィルタファイルのインポート

  • github
  • Clone or Download
  • [opencv-master]-[data]-[haarcascades]
  • haarcascade_eye.xml
  • haarcascade_frontalface_default.xml
  • 人の顔を見分ける

    import cv2
    
    img=cv2.imread('photo.jpg')
    gray=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    faces=face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        img=cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
        
    cv2.imshow('photo', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()

    目を見分ける

    import cv2
    
    img=cv2.imread('photo.jpg')
    gray=cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    
    face_cascade=cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    eye_cascade=cv2.CascadeClassifier('haarcascade_eye.xml')
    
    faces=face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        img=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)
        
    cv2.imshow('photo', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    * 출처: 진짜 코딩하며 배우는 라즈베리파이 4