JavaScriptで画像の顔認識をする方法【Face Detection】

JavaScriptで画像の顔認識をする方法【Face Detection】


JavaScript(jQuery)FACE DETECTION使

サンプルデモ

シンタロヲフレッシュさんの顔認証
シンタロヲフレッシュさんの顔認証

Face Detection""prasm(@shintarowfresh)


ライブラリの入手

ライブラリはGitHub上で公開されています。下記のリンクからアクセスして、まずは、ファイルをダウンロードして下さい。


jquery.facedetection.jsjquery.facedetection.min.js()

jquery.facedetection-master.zip

  • jquery.facedetection-master
    • dist
      • jquery.facedetection.js
      • jquery.facedetection.min.js

プログラミング


FACE DETECTION使HTMLjQueryFace Detect

HTML

<head>
	<!-- jQueryライブラリの読み込み -->
	<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
	<!-- ライブラリの読み込み -->
	<script src="./jquery.facedetection.min.js"></script>
</head>

imgjQueryidimgposition(figure)http

HTML

<figure>
	<img src="./face.jpg" id="face-image">
</figure>

UNIX TIMESTAMP

JavaScript

$( function()
{
	// 顔画像のID属性値
	var id = 'face-image' ;

	// インスタンスの作成
	var img = new Image();

	// 画像の読み込み完了時の処理を定義
	img.onload = function()
	{
		// 処理の記述
	}

	// 画像の読み込み (キャッシュを防ぐため、パラメータを追加)
	img.src = $( '#' + id ).attr( 'src' ) + '?' + Math.floor( new Date().getTime() / 1000 ) ;
}

faceDetection()face-image-border

JavaScript

$(function()
{
	// 顔画像のID属性値
	var id = 'face-image' ;

	// ID要素が[facial-image]の画像を読み込んだ後にプログラムを実行する
	var img = new Image();

	// 画像の読み込み完了時の処理を定義
	img.onload = function()	
	{
		//プログラムの実行
		$( "#" + id ).faceDetection( {

			// プログラムが完了すると[obj]に顔に関するデータが含まれている
			complete: function (obj)
			{
				// 顔を認識できなかった(objにデータがない)場合
				if( typeof(obj)=="undefined" )
				{
					alert( "顔情報を認識できませんでした…。" ) ;
					return false ;
				}

				// 顔を認識できた場合
				else
				{
					// 人数分だけループ処理する
					for( var i=0 ; i<obj.length ; i++ )
					{
						// ラッパー要素内に、顔範囲を示すdiv要素を追加
						$( "#facial-image" ).after( '<div class="facial-image-border"></div>' ) ;

						// 顔範囲の場所を動的に指定
						$(".facial-image-border").eq(i).css( {
							left:obj[i].x * obj[i].scaleX + "px" ,
							top:obj[i].y * obj[i].scaleY + "px" ,
							width:obj[i].width  * obj[i].scaleX + "px" ,
							height:obj[i].height * obj[i].scaleY + "px"
						} ) ;
					}
				}
			} ,

			// プログラムの実行に失敗した時の処理
			error:function(code,message)
			{
				// エラーすると原因を示すテキストを取得できるのでアラート表示する
				alert( "Error:" + message ) ;
			}
		} ) ;
	}

	// 画像の読み込み (キャッシュを防ぐため、パラメータを追加)
	img.src = $( '#' + id ).attr( 'src' ) + '?' + Math.floor( new Date().getTime() / 1000 ) ;
}

例えば、画像に3人分の顔データが含まれていた場合、プログラム実行後のHTML構造は下記の通りになります。改行とインデントは見やすいように、こちらで加えたものです。

HTML

<figure>
	<img src="./sample.jpg" id="face-image">
	<div class="face-image-border"></div>
	<div class="face-image-border"></div>
	<div class="face-image-border"></div>
</figure>

サンプルデモを見る

取得できる値について


HTMLscaleXscaleY

x
Xpx
: 110.67194935568408
y
Ypx
: 100.15831396947877
width

: 174.66362463446376
height

: 174.66362463446376
positionX
px
: 110.67194935568408
positionY
px
: 62.65831396947877
offsetX
px
: 536.1719493556841
offsetY
px
: 1380.1583139694787
scaleX

: 0.495
scaleY

: 0.495
confidence
調
: 3.062835970000007

ダウンロード


FACE DETECTION使HTML



SYNCER00070

facedetection.html Download

jquery.facedetection.js

girls.jpg Download

fire-facedetection.js Download

facedetection.css Download

Download Zip

jquery.facedetection.jszip

Download Zip



201592()

201591()
UISSL
201521()
UI
20141115()


  • LINEに送る