顔を認識したい。
この記事は Speee Advent Calendar 2017 の9日目の記事です。
昨日は @mitsuyoshi さんから、 再利用可能なContainer View Controllerの作り方 でした。
本日のお題は「顔認識」
特に真新しいトピックはないのですが、導入だけでも案外躓いたので、ログとして残しておきます。
これだけ人工知能やら機械学習やら進んだ世の中ですので、先輩から
っ「今日中にこの画像、顔認識だけ済ませといて」
みたいな場面も増えてくると思います。そんな方のお役に立てればいいなと思っています。
実行環境
- Windows10
- Python3.6.3 + OpenCV3.3.0
- PythonはAnaconda環境
インストール
往々にしてそうなのですが、実行より環境の構築で躓きました。いろいろやってみたのできちんと覚えていないのですが、おそらく下記でできました。
pip install opencv-python
conda install ではなんだかうまくいかなかったです。
コード
わりと簡単にできました。
import cv2 # モデルの読み込み face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 画像読み込み・グレースケール化 img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 顔を検知 faces = face_cascade.detectMultiScale(gray) # 顔を線で囲む処理を顔の数繰り返す 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] # 画像表示 cv2.imshow('img',img) # 何かキーを押したら終了 cv2.waitKey(0) cv2.destroyAllWindows()
結果
人の顔でやってもあんまり面白くないので、annoying orangeのナシを使わせていただきました。
出来ました!
理論的な詳細とか追記します。
明日は @iida-hayato さんから、 blockchainの話を書きたいです。