« レトロ・パソコンなお店”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・電子工作」カテゴリの記事

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

コメント

こんにちは。はじめまして。Raspberry pi とかリナックスの初心者です。

今日、Raspberry pi3 にカメラモジュール NoIR V2をつなげて、静止画と短い動画撮影を確認したところです。このあと、実はサーモグラフィーを作りたいと思っています。

WEBカメラの定点観測のように被写体の温度変化を色づけて知りたいのです。
動画にとれればもちろんいいのですが。

このあと、どのようなことをしたら良いのか、もし何かご教示いただければ幸いです。
お忙しいところすみません。

こんにちは、shinさん。

まず、サーモグラフィーを作るには、それ用のセンサーを買わないといけません。私は以前にオムロンのDT6-44L-06というセンサーを買ったことがあります。

https://arkouji.cocolog-nifty.com/blog/2016/11/memsd6t-44l-06-.html

4×4の解像度で7000円以上しました。結構サーモグラフィー用センサーって高いです。Raspberry Piで使えるやつで、約4万円くらいするようです。

https://arkouji.cocolog-nifty.com/blog/2014/12/raspberry-pi-9b.html

この辺りのセンサーの色表示を半透明にして、OpenCVなどを使ってカメラの画像の上に重ねてやれば、おそらく狙いのものが作れると思いますが、やったことがないですね。結局、サーモグラフィーセンサーは放置してます。もったいないことです。

コメントを書く

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

トラックバック

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

無料ブログはココログ

スポンサード リンク

ブログ村