スポーツをITする(3)簡単なフォームチェック tensoleflow.js : 前回の記事 より、簡単なフォームチェックのロジックを追加してみました。 ボーン座標のズレ ブラウザのgetusermediaを使って、TensoleJS posenet を適当にVideoタグで表示すると、映し出された映像に描画するボーン座標にズレが生じます。 これは、縦横比の問題であろうと思われ、試行錯誤の結果、iPhone8の場合、横幅340px、縦幅380pxでズレが最小限に抑えられるようです。以下はズレた例です。 フォームチェックのテンプレート 某一流プロゴルファーのボーン座標を写真から取得しました。 ゴルフのアドレス(構え)としては、ちょっとおかしい感じがありますね。 写真を横幅170px、縦380pxにリザイズして、画面上に合うように手作業しました。 フォームチェックのロジック とりあえず最初は簡単な方法で、と思い、 ・テンプレートの目と耳以外の13箇所それぞれの位置と写した映像のそれぞれの位置の距離を測る。 ・その距離が10ピクセル以下なら1、でなければ0とする。 ・最大13箇所中、何箇所が1になっているか、を百分率する。これを一致率としてみる。 var cnt = 0; var max = 13; var temp = Math.sqrt(Math.pow((tb.nose.x - vb.nose.x),2) + Math.pow((tb.nose.y - vb.nose.y),2)); if (temp < 10) { cnt++; } var temp = Math.sqrt(Math.pow((tb.leftShoulder.x - vb.leftShoulder.x),2) + Math.pow((tb.leftShoulder.y - vb.leftShoulder.y),2)); if (temp < 10) { cnt++; } ・・・・・ var rs = cnt / max * 100; $('.pa').html(Math.round(rs)); もっといい判定方法は無いかな、と思っています。 検証 スマホでは手...