HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2017
0715
イナウサWebカメラの画像処理12解決


イナウサ

リンク

2017/7/15(Sat) 11:44:03|NO.80597

前回のスレッドではありがとうございました。
スレッドを読んでいるとプログラムで顔認識などの画像処理をする場合、既に撮られている画像とライブ
のカメラの画像を比較して認識していることは分かったのですが、その顔の画像を物にした場合、その
ものはカメラで認識されるのでしょうか?その時にひつようなファイル等があれば教えて下さい。また、
物体を認識するサンプルスクリプトがあれば提示して頂きたいです。cvmatchをつかうと一致している
ところを見つけられる事が出来ることまではわかりました。



この記事に返信する


GENKI

リンク

2017/7/17(Mon) 13:38:47|NO.80637

> 既に撮られている画像とライブのカメラの画像を比較して認識している

ライブ映像から顔を見つけるには最も似ている画像を取り出すcvmatchでは難しいと思います。
顔認識の場合、cvfacedetectを使用したほうが良いでしょう。
サンプルfacedetect.hspを実行して、顔が写った写真の画像を読み込ませてみてください。顔の位置に赤い四角が表示されます。

顔認識の仕組みは…、あー最近わかりやすいサイト見つかりませんね。手がかりだけ書いておくので調べてみてください。
cvfacedetect命令の場合、Haar-like特徴分類器を使った方法が使用されています。
Haar-like特徴分類器
http://qiita.com/hitomatagi/items/04b1b26c1bc2e8081427
この分類器のファイルは、\sample\hspcv の中にもいくつか入っています。拡張子がXMLのファイルです。
このファイルはとても沢山の顔画像とそうでない画像から作られたパターンファイルです。(「アニメ顔 認識」で検索するといい資料にあたりあます。)
このパターンと一致する場所を「顔」と認識して検出します。


usb接続のカメラから映像を取得するにはHSPDSCが便利です。
HSPCVでも出来るのですが、環境によっては映像が取得できないことがありました。
HSPDSC.dll
http://www.hinekure.net/dotou_hsp/plugin.htm


> カメラで認識されるのでしょうか?

カメラは撮った映像をPCに送るだけなので何か認識したりはしません。


参考資料として私が昔作ったモジュール置いときますね。
mod_SCFPCモジュール
http://mclab.uunyan.com/dl/dl27.htm



イナウサ

リンク

2017/7/21(Fri) 12:40:23|NO.80678

返答ありがとうございます。hspcvは動作に問題があったのでhspdscで制作を進めます。
ところでですが、提示して頂いたスクリプトでは認識した顔との距離が測定できているのですよね?
と、言うことはカメラ内に写ったものとの距離も測定することは可能ですか?



GENKI

リンク

2017/7/21(Fri) 23:50:57|NO.80684

> と、言うことはカメラ内に写ったものとの距離も測定することは可能ですか?

工夫次第です。
大雑把な原理としては、カメラに近ければ顔は大きく映り、離れれば小さく映るという映像の仕組みと、顔の寸法は変化しない事を利用して距離を計測しています。
また算出にはカメラの画角と、顔認識された大きさの実際の寸法をパラメータとして入力しておく必要があります。
これらのパラメータと、今現在認識されている顔の大きさから距離を算出しています。

少し詳しい解説
http://mclab.uunyan.com/lab/web_cam.htm



イナウサ

リンク

2017/7/22(Sat) 09:03:23|NO.80686

実は、発泡スチロールブロック(黒・茶・鼠を使う予定)→ https://store.shopping.yahoo.co.jp/unimoku-woodmarket/strlbp.html?sc_i=shp_sp_search_itemlist_shsrg_title
の地位を検出したいのです。詳しく言うと、机の上にwebカメラを置きその20cmほど離れたところに
ブロックを置きます。この時、必ずブロックに空いた二つの穴がカメラの正面を向くようになります。
そこで、ブロックがカメラの左右のどちらに片寄っているかを検出したい。(←これがやりたい。)
欲を言えばこの時点でのブロックとの距離が測りたいのですが…
何か案がありましたら教えていただけるとありがたいです。



GENKI

リンク

2017/7/22(Sat) 13:11:51|NO.80690

方法は2つ考えられます。

(1)ブロックのHaar-like特徴分類器を作る。
作り方は…詳しく知らないのですが方法はあるようです。

(2)ブロックに顔写真を貼り付ける。
手っ取り早く簡単な方法です。あとはmod_SCFPC使えば距離と、上下左右の位置も出ます。
XMLファイルさえ入手すれば猫の顔写真でもいいので見た目のシュールさも改善できます。



イナウサ

リンク

2017/7/23(Sun) 00:38:42|NO.80691

なるほど。ありがとうございます。確かに顔画像を貼り付けて検出するのは簡単そうですが、
ブロックをいじりたくないので、Haar-like特徴分類器の作り方をググってXMLファイルを作成してみます。
でき次第連絡します。



イナウサ

リンク

2017/7/23(Sun) 00:41:01|NO.80692

ちなみにですが、hspdscを使った顔認識のスクリプトがあれば教えて下さい。



GENKI

リンク

2017/7/24(Mon) 00:11:38|NO.80694

> hspdscを使った顔認識のスクリプトがあれば教えて下さい。

mod_SCFPCモジュールのsample02.hspとかどうでしょう。

(1) dsc_GetImage命令で画像をキャプチャ。
(2) キャプチャした画像をcvputimg命令でCVバッファに書き込み。
(3) cvgetface命令で認識した画像の座標取得。

という流れです。
mod_SCFPCモジュールを使うのはこの後の処理。cvgetface命令で取得した座標データから3D空間座標を計算しています。



イナウサ

リンク

2017/7/24(Mon) 19:23:57|NO.80698

この命令では、getfaceとなっており顔の座標を取得出来ますが、最初に顔のXMLファイルではなく
ブロックのXMLファイルを使用すればブロックを認識させられるのでしょうか?



KA

リンク

2017/7/24(Mon) 23:39:13|NO.80701

>>させられるのでしょうか?
まず、やってみてから質問しましょう。



イナウサ

リンク

2017/7/24(Mon) 23:57:12|NO.80702

早とちりしてしまいすみませんでした。XMLファイルが完成次第また連絡します。



イナウサ

リンク

2017/8/20(Sun) 12:24:56|NO.81017

どのopenCVを使えばいいのですか?



ONION software Copyright 1997-2023(c) All rights reserved.