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


HSPTV!掲示板


未解決 解決 停止 削除要請

2013
0918
E.THSPで顔認証11解決


E.T

リンク

2013/9/18(Wed) 17:46:17|NO.57223

こんにちは。
今日は顔認証について質問します。
http://www.hsp.tv/play/pforum.php?mode=pastwch&num=27631をみて顔認証を作ろうと
おもいましたがそこのプログラムじゃWebカメラが動作しなくて…しょうがないので次のプログラムでやりました。

#include "hspdsc.as" #include "hspcv.as" cvloadxml "haarcascade_frontalface_alt2.xml" //----------------顔認証 cvbuffer 0,640,480 //----------------顔認証 dsc_Init // 初期化を必ずする! width 300,40 sdim name, 1024 dsc_GetDeviceList name // 利用可能なデバイスの数を取得 if stat = -2 : dialog "デバイスが見つかりません" : end objsize 300, 20 combox id, 100, name button "表示", *view stop *view gsel 0, -1 dsc_Open id, 0, 0, 0, 0 // デバイスオープン screen 2, 320, 240, 0 dsc_Play hwnd, 0, 0, 320, 240 // 再生開始 gsel 2, 0 cvfacedetect 0 //----------------顔認証 wait 1:title "未認証" if stat ! 0 : title "認証!" onexit *exit // 終了ボタンが押された場合 stop *exit dsc_Stop // 停止 dsc_Close // クローズ end
しかしこれだと顔を認証できません。
どこが間違っているんでしょう…
わかる方教えてください。



この記事に返信する


暇人

リンク

2013/9/18(Wed) 23:01:12|NO.57231

確実に間違ってるのはcvバッファには何も画像が無いのにcvfacedetectをしてる所
HSPバッファからcvバッファにコピーする必要がある(専用の命令がある)



E.T

リンク

2013/9/19(Thu) 16:18:07|NO.57248

HSPバッファからcvバッファにコピーする必要があると書かれてもよくわかりません。
専用の命令とはなんですか?
一応検索しましたが…



test

リンク

2013/9/19(Thu) 17:49:52|NO.57249

HSPスクリプトエディタでF1キーを押すとヘルプが出ます。
そこで「cvバッファ」と検索してみましょう。
そうするとcvバッファに関連する命令が出てきます。
命令を1つずつ見ていくと、cvputimgという命令を使えばいいということがわかります。
一応ではなくこれくらい探しましょう。



E.T

リンク

2013/9/19(Thu) 20:00:49|NO.57254

cvputimgを使ってやってみましたが画面にはWebカメラの内容が表示されるんですが
認識しません。
まだどこかプログラムが間違っているのでしょうか?

#include "hspdsc.as" #include "hspcv.as" cvloadxml "haarcascade_frontalface_alt2.xml" //----------------顔認証 cvbuffer 0,320,240 //----------------顔認証 dsc_Init // 初期化を必ずする! width 300,40 sdim name, 1024 dsc_GetDeviceList name // 利用可能なデバイスの数を取得 if stat = -2 : dialog "デバイスが見つかりません" : end objsize 300, 20 combox id, 100, name button "表示", *view stop *view gsel 0, -1 dsc_Open id, 0, 0, 0, 0 // デバイスオープン screen 2, 320, 240, 0 dsc_Play hwnd, 0, 0, 320, 240 // 再生開始 gsel 2, 0 //----------------顔認証 onexit *exit // 終了ボタンが押された場合 *loo cvputimg 1 cvfacedetect 1 kl=stat cvgetface x,y,x2,y2 title "x="+x+" y="+y+" x2="+x2+" y2="+y2+"/kl="+kl await 1 goto *loo *exit dsc_Stop // 停止 dsc_Close // クローズ end



暇人

リンク

2013/9/19(Thu) 20:29:16|NO.57255

なんで
>cvbuffer 0,320,240
でCVバッファID0を初期化してるのに

>cvputimg 1
こっちではID1を使ってるの?
初期化してないCVバッファは使えないよ



E.T

リンク

2013/9/20(Fri) 16:54:46|NO.57262

そうでしたね
そこを直してもまだ何かがだめなのか認証されません。
ちなみに自分の顔の写真をサンプルのfacedetect.hspでやるとうまくいきます。


#include "hspdsc.as" #include "hspcv.as" dsc_Init // 初期化を必ずする! width 300,40 sdim name, 1024 dsc_GetDeviceList name // 利用可能なデバイスの数を取得 if stat = -2 : dialog "デバイスが見つかりません" : end objsize 300, 20 combox id, 100, name button "表示", *view stop *view gsel 0, -1 screen 2, 320, 240, 0 gsel 2,2 dsc_Open id, 0, 0, 0, 0 // デバイスオープン cvbuffer 1,320,240 cvloadxml "haarcascade_frontalface_alt2.xml" //----------------顔認証 title ""+stat wait 65 //----------------顔認証 dsc_Play hwnd, 0, 0, 320, 240 // 再生開始 //----------------顔認証 onexit *exit // 終了ボタンが押された場合 cvsel 1 *loo cvputimg 1 await 1 cvfacedetect 1 kl=stat if kl = 0 : title "未認証/"+kl repeat kl , 0 if kl = 0 : break cvgetface x,y,x2,y2 title "x="+x+" y="+y+" x2="+x2+" y2="+y2+"/kl="+kl color 255,0,0 boxf x,y,x2,y2 loop goto *loo *exit dsc_Stop // 停止 dsc_Close // クローズ end



暇人

リンク

2013/9/20(Fri) 19:37:32|NO.57264

HSPウィンドウにDirectShowウィンドウを貼り付けてるようなものだから
cvputimgだけじゃ無理だな・・・

dsc_GetImageでHSP側に転送してからcvputimg?



E.T

リンク

2013/9/20(Fri) 21:15:36|NO.57265


dsc_GetImage
の使い方を教えてください!



E.T

リンク

2013/9/20(Fri) 21:29:55|NO.57266

↑自力解決しました!



暇人

リンク

2013/9/20(Fri) 22:05:33|NO.57267

dsc_GetImage用のHSPバッファを用意して(これは再生サイズじゃなくデバイス側のサイズが必要)

再生後一度

dsc_SetCapConfig 1
でdsc_GetImageを使用できるように設定

cvputimgの前に用意したHSPバッファを操作先にしてdsc_GetImageを使う


後、boxf x,y,x2,y2しても再生画面の上には描画されない(ウィンドウが別物だから)
HSPバッファからコピーはdsc_VMRMixImageで出来る
それからx,y,x2,y2じゃなくx,y,x+x2,y+y2だろう



暇人

リンク

2013/9/20(Fri) 22:08:07|NO.57268

書いてる途中に他の用事してたら解決してた・・・



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