2012年01月18日 08:25:00
「JavaScriptでWebカメラの画像を取得するライブラリ」を、時間を見つけてはちまちまといじっています。
元々はJavaで書いたプログラム(ARToolkitがGPLだったので、AR認識を自前で書いた)をJavaScriptに移植しようとしていたものです。
でも、HTML5のカメラの仕様はまだ実装されていないです。
結局、Flashと連携させることで、完全ではないけど移植をおこないました(3D関係は手間が掛かりそうなので移植していないです)。
でもまあ、カメラのキャプチャやマーカー認識はできているので、使い道はあるかなあと思います。
というわけで、そろそろ公開レベルになってきたので、ぼちぼち公開の準備をする予定です。
このライブラリでできることを書いておきます。
・Webカメラの画像のキャプチャ。
・上記画像の2値化。
・ラベリング。
・ドットパターンの検出、あるいはマーカーの検出。
・検出時のコールバック処理(各種解析データの取得)。
使い方の流れは、以下の感じです。
1.フィルター(2値化、ラベリング、検出など)を設定して、動作を決める。
2.コールバック時の処理をfunctionで指定(常時実行と、ワンタイムを指定可能)。
3.Webカメラのデータを取得(指定したIDのキャンバスに取得画像を描画、指定したコールバック処理でデータを受け取り)。
また、ドットパターンやマーカーの検出時の処理を予約しておくと、検出時に結果をコールバックを受け取ることができます。
実際のソースは、リンク先のソースを見てもらった方が分かりやすいですが、簡略化して抜粋したソースコードを以下に示しておきます。
ここらへんは、まだもう少し整理可能かなと思います。
crocro.jscam.initSwfCam();
crocro.jscam.initCanvas("cnvsCap");
crocro.jscam.setFilter(["bin", "lbl", "detectMarker", "drawMarker", "drawClipMarker"]);
cap = crocro.jscam.getJsCam();
cap.setBackDataTypes(["pixelSwf", "pixelRaw", "labelData", "markerData"]);
cap.setExtrFnc(function(resObj){ // コールバックの常時実行関数
if ("pixelSwf" in resObj) alert(resObj.pixelSwf.length);
})
cap.detect(function() { // 1回だけ実行の関数
alert("最初の検出!");
});