JavaScriptとcanvasで色の平均値を取得する

画像に映っているボールの色の平均値を取得したくなりました。ボールの場所が決まっているなら、JavaScriptとcanvasで色の平均を出すことができます。

色の平均値が欲しくなる場面

Webアプリでボールの色を覚えさえるプログラムを作っています。

当初は、ボールの中心の色をピックアップしていました。しかし、意図しない色が取得される場合があります。

ボールのツヤ、描かれているロゴ、縫い目などの色を誤認するようです。特にツヤは照明環境に左右され、どうにもできない場合もありました。

ピンポイントでの色取得は難しいため、ボール全体の色の平均値を取得することにします。

JavaScriptとcanvasで色の平均値取得

画像からボールを切り抜いて、1pxずつ色を調べます。

R,G,Bの値をそれぞれ合算していき、最後にpx数で割れば色の平均が出せます。

実際にテストしたコードです。

利用したimg/ball.jpgも合わせて掲載します。テストコードを実行する場合にご利用ください。

ライブラリなしで軽量に計算できる

JavaScriptで画像解析をしようとすると、OpenCV.jsのような重たいライブラリを読み込まないといけないかと思っていました。

しかし、JavaScriptとcanvasだけで、すべてのピクセルを色の配列に変換して取得できます。

これにより、簡単な画像処理ならライブラリなしで軽量に処理できることが分かりました。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)