gist

2012年4月28日土曜日

Node.jsで顔認識してみよう

node-opencvを使うとNodeでも画像から顔認識ができます。

brewを使ってOpenCVをインストールしてから、npmでnode-opencvをインストールします。Make時にMono.frameworkが悪さをするので一旦待避。 あとカスケードファイルもコピー。

$ sudo mv /Library/Frameworks/Mono.framework /tmp
$ brew -v install --build32 opencv
$ mv /tmp/Mono.framework /Library/Frameworks/
$ npm install opencv
$ cp ../../../node_modules/opencv/data/haarcascade_frontalface_alt.xml .

以下のようにコードを書きます。

cv = require("opencv")
cv.readImage "./faces.png", (err, im) ->
  im.detectObject "./haarcascade_frontalface_alt.xml", {}, (err, faces) ->
    i = 0

    while i < faces.length
      x = faces[i]
      im.ellipse x.x + x.width / 2, x.y + x.height / 2, x.width / 2, x.height / 2
      i++
    im.save "./out.jpg"

適当に顔画像を用意します。

実行。

$ coffee sample.coffee

out.pngができているので見てみると

な感じに。若干ズレているところもありますが、Webと組み合わせると面白そうです。

0 件のコメント: