顔認識に必要なライブラリまとめ(cv2. os. PIL)

スポンサーリンク

前回の記事で使用したライブラリについてまとめました

顔認識で必要なものはおおむね揃っているので、目次を使いながら活用してみてください!

cv2.(opencvライブラリ)

cv2.imwrite()

cv2.imwrite(path, img)  

画像保存の関数

第1引数は画像のファイル名、第2引数は保存したい画像

cv2.imshow()

cv2.imshow(‘Image’,img)

第1引数は文字列型で指定するウィンドウ名、第2引数は表示したい画像

cv2.destroyAllWindows()

現在までに作られた全てのウィンドウを閉じる関数

cv2.waitKey()

キーボード入力を処理する関数

引数は入力待ち時間でミリ秒単位で指定

引数に 0 を指定した時は,何かしらのキーを打つまでキー入力を無期限で待ち続ける

例 cv2.waitKey(100) キーボードが入力されるまで100ミリ秒待つ

cv2.flip()

cv2.flip(src, flipCode[, dst])

画像データを操作

  • 0:  x軸を中心に反転(ようするに上下反転)
  • 正の値: y軸を中心に反転(ようするに左右反転)
  • 負の値: x軸y軸両方の反転


cv2.FONT_HERSHEY_SIMPLEX

フォントを指定する関数

他にもPLAIN、DUPLEX、COMPLEXなど様々なフォントがある

cv2.putText()

cv.putText(img, text, org, fontFace, fontScale, color, thickness=1, lineType=cv2.LINE_8)

テキストを描画する関数

  • text:描画する文字列
  • org:文字列の左下座標
  • fontFace:フォントの種類
  • fontScale:縮尺(1.0が標準)

cv2.rectangle()

長方形を描画する関数

cv2.rectangle(img, pt1, pt2, color, thickness=1, lineType=cv2.LINE_8, shift=0)

  • img:図形を描画する画像、NumPyの配列ndarray
  • pt1,pt2:線の両端の座標や円の中心などを(x, y)で指定する。単位はピクセル、原点は左上
  • color:カラー画像、BGRの場合は(Blue, Green, Red)
  • thickness:線の太さ
  • lineType:「4連結: cv2.LINE_4」、「8連結: cv2.LINE_8」、「アンチエイリアス: cv2.LINE_AA」の3つから選択
  • shift:座標の小数部分のビット数を整数で指定する デフォルトは0

shiftを指定すると、座標が(x2^(-shift), y2^(-shift))として計算される。

例えば、座標を(100, 101)でshift=1とすると、実際に描画に用いられる座標は(50, 50.5)となり、サブピクセル精度で座標を指定することができる。

VideoCaptureクラス (camインスタンスを生成)

動画ファイルを読み込む 

としてcamインスタンスを生成する

0はカメラを識別する番号(実際はなんでもよい)

cam.release()

動画データを開放する

cam.set()

cam.set(propId, value)

取得画像の設定を変える

  • propid:0~10の値(3は横幅、4は高さを変更できる)
  • value:変えたい値

例 cam.set(3, 640)→横幅640ピクセル

cam.read()

読み込み

2値の値(True,False)を返す

読み込みが正しければTrue、失敗したらFalse

戻り値(<True or False>, <イメージデータ>)

cam.get()

cam.get(int property_id)

ビデオキャプチャのフレームに関する値が返ってくる

property_idに数字を指定して設定をする

  • 3ビデオストリーム中のフレームの幅
  • 4 ビデオストリーム中のフレームの高さ

CascadeClassifier(クラス)

物体検出のためのクラス

としてdetectorインスタンスを生成する

detectMultiScale()

detectMultiScale(const Mat& image, vector& objects, double scaleFactor=1.1, int minNeighbors=3, int flags=0, Size minSize=Size())

検出領域の(左上の点のx座標, y座標, 幅, 高さ)のリスト(配列)をかえす

  • image:画像データ.ここに格納されている画像中から物体が検出される
  • objects:矩形を要素とするベクトル.それぞれの矩形は,検出した物体を含む
  • scaleFactor:各画像スケールにおける縮小量を表す
  • minNeighbors:物体候補となる矩形は,最低でもこの数だけの近傍矩形を含む必要がある

例 detector.detectMultiScale(gray, 1.3, 5)  
(grayという画像から認識、スケールをどうするか、矩形に何個入れば真か)

 スケールを細かく変更して検出ると、見落としは少ないが処理時間がかかる。

os(osモジュール)

OSに依存しているさまざまな機能を利用できるモジュールで、主にファイルやパスの操作が可能

os path join()

パス名操作に関する処理をまとめたモジュールに実装されている関数の一つ
引数に与えられた二つの文字列を結合させ、一つのパスにする事ができる

os.listdir()

ファイル・ディレクトリの一覧を取得

「datasets」の下に’dir1′, ‘dir2’, ‘file1’, ‘file2.txt’, ‘file3.jpg’ というディレクトリとファイルがあるとする。

os.path.split()

os.path.split(path)

path を (head, tail) に分割

tail はパス名の構成要素の末尾(通常はファイル名)で,head はそれより前の部分 

PIL

画像処理用のライブラリ

Image.open()

Image.open(画像ファイルのあるパス)

画像の読み込み

Image.convert()

引数にLを指定することで白黒画像で読み込める

パスから画像を読み込み、白黒画像に変換している

LBPHFaceRecognierクラス(recognizerインスタンスを生成)

Local Binary Patternを識別するためのクラス

recognizerインスタンスを生成

recognizer.train()

.train (InputArrayOfArrays src(画像データ), InputArray labels)=0

与えられた画像データから訓練をするメソッド

recognizer.train()

.write (const String &filename) const

識別機を指定したパスに保存する

recognizer.predict()

戻り値 label 、confidence

  • label :与えられた画像から予測したラベル
  • confidence:確度

確度は、分散に基づいて計算されるため、0に近いほうが確度が高くなる

参考サイト一覧

Python, OpenCVで図形描画(線、長方形、円、矢印、文字など)

OpenCVの描画機能

OpenCVを使って誰の顔なのかを推定する(Eigenface, Fisherface, LBPH)

OpenCV リファレンス

PILの使い方①

Numpy配列の基礎

os.path.split(path)

コメント

タイトルとURLをコピーしました