VP10.1.24


memo

cvconvertでグレースケール化したものをフルカラー化して戻すのと、
cvbufferで初期化するのとどっちが速いのか試してみた。
cvbufferのID0がフルカラーの入力画像、
ID1がグレースケール化などをする作業用の画像。
  • cvconvertでフルカラー化1000回:933.5ms
  • cvbufferで初期化1000回:3104.6ms
repeat 1000
 cvcopy 0,0,0,1,CVCOPY_SET  // 画像をコピー
 cvconvert 0,1              // グレースケール化
 ;cvconvert 1,1             // フルカラー化
 ;cvbuffer 1,w,h            // バッファ初期化
loop
どうみてもcvconvertでフルカラー化のほうが速い。
ちなみに
repeat 1000
 cvbuffer 1,w,h
loop
↑やったら10msだったので、バッファ初期化のほうが速いかと思ってた。
画像形式変わるとメモリ領域の再確保が大変なのかな。

進行状況

手とカメラの距離20cmくらい。
どこを押したかではなく、どのくらい検出できたかを表示してみた。
真ん中の線の付近10ドット幅の領域内の黒いドット数を数えた。
比較的長い赤線が2つ並んだときは長いほうのみ音を出すようにするといいかも。
それだけだと隣り合った鍵を同時に押せないのでさらにその隣の鍵の赤線の長さを見る必要があるかも。

左上の数字はFPS。
20~33FPSあたりで安定しない。
ただ表示するだけでも、いろいろ画像処理しても変わらないので、
awaitの関係かもしれないし、カメラからの転送時間の関係かもしれない。
そんなに速い曲をこれで弾けるとは思わないのでとりあえずよしとする。


↑画像を見てみると、20cmでこのくらいなら倍の40cmなら十分1つの鍵盤を押せそうだなあと思ってみる。
1つの鍵ごとに、黒ドットの重み付けするともっと良くならないかな。
例えば、横7ドットで判断するなら、
1 4 9 16 9 4 1
みたいに真ん中ほど重くすれば、ちょっと隣の鍵に触れてしまっても大丈夫。



名前:
コメント:
最終更新:2011年02月03日 18:04