|
|
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バッファにコピーする必要がある(専用の命令がある)
|
|
2013/9/19(Thu) 16:18:07|NO.57248
HSPバッファからcvバッファにコピーする必要があると書かれてもよくわかりません。
専用の命令とはなんですか?
一応検索しましたが…
|
|
2013/9/19(Thu) 17:49:52|NO.57249
HSPスクリプトエディタでF1キーを押すとヘルプが出ます。
そこで「cvバッファ」と検索してみましょう。
そうするとcvバッファに関連する命令が出てきます。
命令を1つずつ見ていくと、cvputimgという命令を使えばいいということがわかります。
一応ではなくこれくらい探しましょう。
|
|
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バッファは使えないよ
|
|
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?
|
|
2013/9/20(Fri) 21:15:36|NO.57265
dsc_GetImage
の使い方を教えてください!
|
|
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
書いてる途中に他の用事してたら解決してた・・・
|
|