顔認証アプリつくる2

Standard
顔認証アプリつくる2

face.comのAPIを叩いてみます。
 
まずはhttp://developers.face.com/でアプリケーションを登録して、API KeyとAPI Secretを取得します。アプリケーションは今のところ1つのアカウントで5つまで作れるみたいです。取得できたらさっそく試してみます。APIはたぶん一番基本のfaces.detectで。ブラウザから、http://api.face.com/faces/detect.json?api_key=APIキー&api_secret=シークレットキー&urls=画像のパス にアクセス。ちゃんとレスポンスが返ってくれば準備おーけーです。

 
とりあえず↑と同じことを前回作った簡易画像アップローダに組み込みます。あと、前回作った簡易画像アップローダを動かすサーバ持ってないダサなことに気づいたので、FTPダサでレンタルサーバに画像をあげることにします。
 
app/controllers/face_controller.rbを修正

require 'net/ftp'
require 'json'

class FaceController < ApplicationController
  protect_from_forgery :except => :upload

  API_KEY = 'KEY'
  API_SECRET = 'SECRET'
  API_HOST = 'http://api.face.com/faces/detect.json'
  API_PARAM = '?api_key='+API_KEY+'&api_secret='+API_SECRET+'&urls='

  def index
  end

  def upload
    directory = 'public/images'
    @filename = Time.now.to_s.gsub(/[\s\:\+\-]/,'')[0,8] + params['image'].original_filename
    path = File.join(directory,@filename)
    File.open(path, 'wb') {|f| f.write(params['image'].read)} 
    @host = 'HOSTNAME'
    @dir = 'upload/images'
    @tags = []
    begin
      ftp = Net::FTP.new(@host,'USERNAME','PASSWORD')
      ftp.chdir('public_html/' + @dir)
      ftp.putbinaryfile(path, @filename, path.size)
      ftp.close
    rescue
      p 'could not connect FTP server.'
    end
    @tags=requestFaceDetect(@host,@dir,@filename)
  end

  private
  def requestFaceDetect(host,dir,filename)
    url = URI.parse(API_HOST)
    req = Net::HTTP::Get.new(API_HOST+API_PARAM+'http://'+host+'/'+dir+'/'+filename)
    res = Net::HTTP.start(url.host,url.port) {|http| http.request(req)}
    json_res = JSON.parse(res.body)
    pp json_res
    tags = []
    json_res['photos'][0]['tags'].each {|tag| tags<<tag} unless json_res['status'] == 'failure'
    return tags
  end
end

 
app/views/face/upload.html.erbを修正

Completed!!
<a href="http://<%=@host%>/<%=@dir%>/<%=@filename%>" target="blank"><%=@filename%></a>
<br/><br/><br/>
<img src="/images/<%=@filename%>"/>
<br/><br/>
<% @tags.each do |tag| %>
  <% unless tag['center'] === nil %>
    Face was detected @{x=><%= tag['center']['x'] %>,y=><%= tag['center']['y'] %>}. 
  <% end %>
  <% unless tag['attributes']['gender'] === nil %>
&nbsp;Its gender is <%= tag['attributes']['gender']['value'] %> (<%= tag['attributes']['gender']['confidence'] %>%).
  <% end %>
  <br/>
<% end %>

 
 
とりあえず田中美保でやってみます
 
screenshot

cap1

 
 
あおーん。なんか人がたくさん写ってるやつで
 
screenshot

cap2

田中美保より女である確率高いってどういうことや。
 
 
犬とか
 
screenshot

cap3

犬はダメらしい。
 
 
 
次はjsでモフモフなうしてみます。

Facebook comments:

One thought on “顔認証アプリつくる2

  1. A wide variety oof interesting game titles noww are readily available for all ages,
    with functions that remarkably make remarkable adventures near to actuality.
    The online games advertise real looking movement scenes due to their nicely-built graphics and models.

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>