« レトロ・パソコンなお店”BEEP”の在庫状況 | トップページ | テレビモニターに収納棚 勉強机のついたベッド”wave chaise” »

2015年10月16日 (金)

Raspberry Piで画像処理ライブラリ”OpenCV”使って”顔認識”試してみた

画像処理が出来るといろいろ面白そうなので、Raspberry Piに”OpenCV”を入れて遊んでみることにしました。

参考にしたのはこちらの記事。

(35連休)4日目:Raspberry Pi(OpenCVのインストール〜リアルタイム顔認識) - hsuetsugu’s diary

ここの記事を参考に、リアルタイムのカメラ画像の表示から顔認識までさせます。

まず、Raspberry PiをVNCでPC・iPhoneから操作できるようにしないといけません。参考にしたのはこちら。

Raspberry Piの設定【VNCサーバ(tightVNC)の設定】 - Aldebaranな人のブログ

ただしうちのRaspberry Piではどうしてもtightvncが自動起動してくれないため、一旦Tera Termでつなぎ

tightvnc
startx &

と打ち込んでからVNCでつないでます。

メインPC、iPhoneともに使ってるVNC Viewerは”RealVNC”ってやつです。

PC用:RealVNC日本語インストール版の詳細情報 : Vector ソフトを探す!

iPhone用:VNC Viewerを App Store で

また、つないだUSBカメラは以前買ったサンコー USB防水内視鏡カメラを使用。

Img_0119

余計な線が多過ぎ!

しかし、手ごろなカメラが見つからなかったんですよね。もうちょっとまともなカメラがどこかにあるはずなんですけど。

こんなカメラで大丈夫か!?と思ったので、以下のサイトを参考に動作確認。

Raspberry Piを使用してWEBカメラの動作確認を行う方法 (参考資料) — Akizuki 1 documentation - dx-670_raspberry_pi_setting.pdf

問題なく動きます。こんなカメラでも一応”Webカメラ”なんですね。

さて、前置きは置いておき、最初のリンク先に従ってOpenCVを導入。

まず

sudo apt-get update

としてから以下のコマンドを実行。

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

これでOpenCVと、Python上でOpen CVを使う環境を導入できます。

続いて以下のコードを作成。

#!/usr/bin/python

import cv2.cv as cv
import time

cv.NamedWindow("camera", 1)

capture = cv.CaptureFromCAM(0)

# 画像サイズの指定
cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_WIDTH,320)
cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_HEIGHT,240)

while True:
    img = cv.QueryFrame(capture)
    cv.ShowImage("camera", img)
    if cv.WaitKey(10) > 0:
        break
cv.DestroyAllWindows()

これを”camera.py”という名前で保存して

python camera.py

と実行すると、カメラの画像が映し出されます。

Opencv01

iPhoneのVNCを使っても同様にカメラ画像が確認できます。

Img_0117

さて、せっかくなんで”顔認識”までやらせてみました。

こちらはいちいちコードを打ち込むことなく出来ます。

まず下記サイトに行き

TechnoLabsz: How to easily install OpenCV on Raspberry Pi

ここのちょっと下の方にある”8)Download the source code from below”の下にある”Download”をクリックすると、ダウンロードサイトへ移動。

DOWNLOAD(92.16KB)」というボタンをクリックすると”face_detect_rpi.zip”という圧縮ファイルが入手できます。

解凍すると”face.xml”と”facedetect.py”の2つのファイルが出てくるので、これをRaspberry Piに転送します。

Windows PCでTera Termを使っていれば簡単にファイル転送できます。

まず転送したい場所(ディレクトリ)にTeraTerm上であらかじめ移動。

そして転送したいファイルをTera Termにドラッグ&ドロップすると

Opencv00

こんな画面が出てくるので”SCP”をクリック。

すると転送完了。楽ですね。

ただし複数ファイルを同時に送ることが出来ないため、”face.xml”と”facedetect.py”の2回分やる必要はありますが。

転送を完了したら、VNC上のRaspberry Piターミナルで

python facedetect.py --cascade=face.xml 0

と実行するだけ。

Opencv02

 顔と認識すると、顔部分を赤枠で表示されます。

Opencv03

うまるちゃんも一応顔認識されました。

リアルタイム認識ですが、1~2fps程度でしか動きません。カメラを向けても反応するまでしばらくかかります。

せめてRaspberry Pi 2だったら・・・そろそろ買おうかなぁ。

さて、せっかく導入したOpenCVですが、サンプルを使うならともかく、実際に画像解析ソフトを作るとなると難易度がぐっと上がります。

一応、この辺でどういう機能があるのかを勉強中ですが

画像処理 — OpenCV-CookBook

OpenCV 2.2 Python リファレンス — opencv 2.2 documentation

あまりに機能が多過ぎて、まず何をやりたいかをイメージしてとっかからないとだめそうです。

せっかくRaspberry Piを使うので、単に画像処理で終わらせるのではなく、画像処理した結果に基づいて何か動作してくれる、てなものを作りたいと考えてます。

といっても、電子工作もプログラムも中途半端な知識しかない私。何が作れるんでしょうか?

OpenCV自体はPCでも使えるわけですし、それこそ会社で使うソフトを作ってもいいわけですし。Raspberry Piにこだわる必要はありません。

てことで、しばらくは勉強してみます。何か面白いものが作れたら記事にしますね。

Raspberry Pi 2 Model B (1)

サンコー USB防水内視鏡ケーブル7M WPMISC7M

« レトロ・パソコンなお店”BEEP”の在庫状況 | トップページ | テレビモニターに収納棚 勉強机のついたベッド”wave chaise” »

Raspberry Pi・Arduino・電子工作」カテゴリの記事

数値解析系」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/510034/62453681

この記事へのトラックバック一覧です: Raspberry Piで画像処理ライブラリ”OpenCV”使って”顔認識”試してみた:

« レトロ・パソコンなお店”BEEP”の在庫状況 | トップページ | テレビモニターに収納棚 勉強机のついたベッド”wave chaise” »

当ブログ内検索

  • カスタム検索

スポンサード リンク

ブログ村

無料ブログはココログ