読者です 読者をやめる 読者になる 読者になる

Python: 顔検出

画像から顔の位置を検出する。

環境

Pythonはいつもどおり。 OpenCVC++で書かれた画像処理ライブラリ。PythonJavaから利用できるライブラリを提供している。

OpenCVが気になる人は。

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識

つかったライブラリ
  • cv2

OpenCVを利用するためのライブラリ。

コード
  1. import cv2
  2. imagePath = '/path/to/image'
  3. cascadePath = '/path/to/haarcascade_frontalface_default.xml'
  4. faceDetector = cv2.CascadeClassifier(cascadePath)
  5. image = cv2.imread(imagePath)
  6. gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  7. faces = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30), flags = cv2.cv.CV_HAAR_SCALE_IMAGE)

ここまでで顔が検出できました。

  • imagePath:画像ファイルへのパス。
  • cascadePath:顔画像検出のためのモデルファイルへのパス。OpenCVのインストール時に入っているはずです。探してみてください。

出力してみましょう。

  1. for (x, y, w, h) in faces:
  2. cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
  3. cv2.imshow("Faces found" ,image)
  4. cv2.waitKey(0)

これで画像の顔の上に四角を描いた画像が出力されます。