Symfoware

Symfowareについての考察blog

FreeBSD + OpenCV 2.4.9 + py-opencvで顔認識

FreeBSD 10にOpenCVとpy-opencvをインストールして顔認識してみます。


インストール



pkgコマンドでインストールしました。
OpenCVのインストールは


pkg install opencv




バージョン2.4.9_2がインストールされました。


# pkg install opencv
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 8 packages will be affected (of 0 checked):

New packages to be INSTALLED:
    opencv: 2.4.9_2
    libv4l: 0.8.8_2
    jpeg: 8_5
    tiff: 4.0.3_4
    jbigkit: 2.1_1
    png: 1.5.19
    opencv-core: 2.4.9_1
    jasper: 1.900.1_14

The process will require 51 MB more space.
13 MB to be downloaded.

Proceed with this action? [y/N]:





続いてpy-opencv。インストールは


pkg install py27-opencv




gccも合わせてインストールされるので結構な容量になります。


# pkg install py27-opencv
Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.
The following 16 packages will be affected (of 0 checked):

New packages to be INSTALLED:
    py27-opencv: 2.4.9_2
    py27-numpy: 1.8.1_4,1
    suitesparse: 4.0.2_4
    lapack: 3.4.2_3
    blas: 3.4.2_3
    gcc: 4.8.3_2
    indexinfo: 0.2
    mpfr: 3.1.2_2
    gmp: 5.1.3_2
    mpc: 1.0.2_1
    gcc-ecj: 4.5
    binutils: 2.24_1
    gettext: 0.18.3.1_1
    python27: 2.7.8_5
    py27-setuptools27: 5.5.1
    py27-nose: 1.3.3

The process will require 520 MB more space.
100 MB to be downloaded.

Proceed with this action? [y/N]:






ImportError: numpy.core.multiarray failed to import



インストールできたか確認してみます。
pythonコンソールを起動。


# python2.7



cv2をインポートしてみます。


>>> import cv
ImportError: numpy.core.multiarray failed to import
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/site-packages/cv.py", line 1, in <module>
    from cv2.cv import *
ImportError: numpy.core.multiarray failed to import




エラーになりました。悲しい。

原因はわかっていないのですが、先にnumpyをインポートしてやれば
エラーがなくなりますので、これでよしとしました。


>>> import numpy
>>> import cv2





毎回python2.7で起動するのが面倒なので、.cshrcにaliasを設定しておきます。


# vi ~/.cshrc




ファイル末尾に追加。


alias python python2.7






サンプルプログラム



python+OpenCVで顔認識をやってみる
こちらをまると参考にしています。


  1. # -*- coding:utf-8 -*-
  2. import numpy
  3. import cv2
  4. cascade_path = '/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml'
  5. image_path = 'lena.jpg'
  6. color = (255, 255, 255) #白
  7. #ファイル読み込み
  8. image = cv2.imread(image_path)
  9. #グレースケール変換
  10. image_gray = cv2.cvtColor(image, cv2.cv.CV_BGR2GRAY)
  11. #カスケード分類器の特徴量を取得する
  12. cascade = cv2.CascadeClassifier(cascade_path)
  13. #物体認識(顔認識)の実行
  14. facerect = cascade.detectMultiScale(
  15.                 image_gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))
  16. print "face rectangle"
  17. print facerect
  18. if len(facerect) > 0:
  19.     #検出した顔を囲む矩形の作成
  20.     for rect in facerect:
  21.         cv2.rectangle(image, tuple(rect[0:2]),tuple(rect[0:2]+rect[2:4]), color, thickness=2)
  22.     #認識結果の保存
  23.     cv2.imwrite("detected.jpg", image)




実行してみると、ちゃんと顔認識出来ました。

491_01.png




その他の画像



http://model.foto.ne.jp/
http://www.pakutaso.com/

こちらから人物画像をお借りして、テストしてみます。
ちゃんと認識できていますね。

491_02.png

491_03.png
関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/11/01(土) 17:46:03|
  2. Python
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<OpenCV 2.4.9 + py-opencvでキーポイントの検出 | ホーム | cssで画像の一部を切り抜き、jQueryで拡大・縮小できるようにする>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1520-737a675f
この記事にトラックバックする(FC2ブログユーザー)