0
0

More than 3 years have passed since last update.

【覚書】Windows環境でOpenCVチュートリアル(顔認識)をやってみた話

Last updated at Posted at 2020-06-17

検索系の相談で、図面を全文検索できないかといった相談があり
実現確度の検証のためにOpenCVのチュートリアルをやってみた。

以下は自分が行った手順の覚書です

前提
OS: 
 Windows10 64bit

Python:
 Python3.7(Anaconda3)

目標
 OpenCV環境の構築から、簡単なチュートリアル実施まで(とりあえず顔認識くらいまでは実施したい)

準備

アナコンダのインストール

image.png

OpenCVのwhlをダウンロード

・上のタブからRELEASESをクリック。
・OpenCV – 4.2.0のSourcesをクリック
・zipを解凍して、opencv_python‑4.2.0‑cp37‑cp37m‑win_amd64.whlを取り出す
※Githubから取得したファイルは、2020/06時点でエラーとなるため公式から取得したファイルを使用しました

アナコンダのナビゲータでOpenCV環境を作成

image.png

image.png

numpy と matplotlib をインストール

conda install numpy
pip install matplotlib

image.png

★ここまでに参考にした記事
基礎構築時に参考にした記事
https://qiita.com/FukuharaYohei/items/5d49938ffd33d198f0c0

CascadeClassifierエラーの対策の為に参考にした記事
http://sh0122.hatenadiary.jp/entry/2017/10/30/210411

チュートリアル

お試し的にやってみるので、まずは顔認識をしてみようと思います。
基礎が理解できればあとは基礎をカスタマイズしていくだけです。

カスケードファイルの取得

分類や認識に必要な特徴量をすでに学習済みデータが集約されたxmlファイルです
今回は顔認識の為に『haarcascade_frontalface_default.xml』を使用
https://github.com/opencv/opencv/blob/master/data/haarcascades/haarcascade_frontalface_default.xml

顔認識に使用する写真

今回使用する写真はSNOWで可愛く加工した自分の写真です。 
これ認識できるのか・・・?
image.png

pythonコードをかいてみる test.pyという名前で以下の処理を書きます

import cv2

# 分類器
cascadeFile = "C:\imagepy\haarcascade_frontalface_default.xml"

# 分類器の設定
cascade = cv2.CascadeClassifier(cascadeFile)

# 入力ファイル
imageImput ="C:\imagepy\myface.jpg"

# 入力ファイルをリードする
image = cv2.imread(imageImput)

#グレースケールにする
imageGray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 出力ファイル
imageOutput = "C:\imagepy\out.jpg"

# 顔を認識する
facerect = cascade.detectMultiScale(imageGray, scaleFactor=1.1, minNeighbors=2, minSize=(30, 30))

# 顔を検出できた際の処理
if len(facerect) > 0:

    # 顔に枠を付ける
    for rect in facerect:
        cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), (255, 255, 255), thickness=2)

    # 結果を画像として保存する
    cv2.imwrite(imageOutput, image)

test.pyを実行してみます

image.png

SNOWで可愛く加工した自分の写真でも顔として認識されているようです

image.png

今回の目標であるチュートリアルの実施までは完了しました。
次回は図面上にある記号やオブジェクトを認識して、全文検索可能にするといったことをやってみたいと思います。

仕事で使う図面で試験するわけにはいかないので地図内の記号を認識して、全文検索可能な状態を目指すかなー。。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0