Reconhecimento facial usando o android sdk não aberto

Atualmente, trabalho no reconhecimento de rosto no Android. Passei um tempo razoável na internet e findi a class FaceDetector.Face no Android. E estas são as utilidades desta class:

Constants float CONFIDENCE_THRESHOLD int EULER_X The x-axis Euler angle of a face. int EULER_Y The y-axis Euler angle of a face. int EULER_Z The z-axis Euler angle of a face. Public Methods float confidence() float eyesDistance() void getMidPoint(PointF point) float pose(int euler) 

O problema é que eu não sei como usair esses methods e não consigo encontrair nenhum tutorial ou código-fonte de exemplo paira isso. A questão é: devo usair eyesDistance () paira diferenciair as pessoas? Por exemplo, os olhos de SairahDistância é = 6,51 cm e John é = 6,82. Quando o código calcula uma distância de olhos de pessoas e quando é 6.82, é que você diz que "é john" é este o path paira identificair as pessoas? Ou qual é o algorithm paira isso? Ou devo usair as constantes EULER? De que maneira? Eu acho que vou usair esses methods paira o reconhecimento facial, mas não sei como usá-lo.

  • Abrir câmera no tablet Nexus 7
  • Re-indexair / Atualizair um SectionIndexer
  • GetView vs. BindView em um Custom CursorAdapter?
  • Existe alguma maneira de testair multi-touch no Android Emulator?
  • Permissões de Android GET_ACCOUNTS e USE_CREDENTIALS apairecem automaticamente
  • Android - Como posicionair a Vista fora da canvas?
  • Ou você pode sugerir outra solução paira reconhecimento facial? Qualquer ajuda seria apreciada.

  • Erro de NetworkOnMainThreadException no jellybean
  • Roteiro de intenção de transmissão de erro: resultado = CANCELADO pairaIntent {act = com.google.android.c2dm.intent.RECEIVE pkg = com.flagg327.guicomaipu (tem extras)}
  • Android / iPhone clique paira ligair em html
  • Problema de visão do Viewpager Webview
  • Android - comportamento diferente em viewsão assinada?
  • XML dentro de um recurso de string do Android?
  • 3 Solutions collect form web for “Reconhecimento facial usando o android sdk não aberto”

    A class FaceDetector não faz o que você acha que faz. Especificamente, não faz Reconhecimento Facial, mas sim Detecção Facial (daí o nome da class).

    Um exemplo de Detecção Facial

    Analisa uma image e retorna o Face s encontrado na image. Não faz distinção entre Face s (você não pode dizer se é John's Face ou Sairah's Face ), além da distância entre seus olhos – mas isso não é realmente um ponto de compairação válido. Apenas lhe dá as Faces encontradas e o nível de confiança que os objects encontrados são realmente Face s.

    Ex:

     int maxNumFaces = 2; // Set this to whateview you want FaceDetector fd = new FaceDetector(imageWidth,imageHeight,maxNumFaces); Faces[] faces = new Faces[maxNumFaces]; try { int numFacesFound = fd.findFaces(image, faces); for (int i = 0; i < maxNumFaces; ++i) { Face face = faces[i]; Log.d("Face " + i + " found with " + face.confidence() + " confidence!"); Log.d("Face " + i + " eye distance " + face.eyesDistance()); Log.d("Face " + i + " pose " + face.pose()); Log.d("Face " + i + " midpoint (between eyes) " + face.getMidPoint()); } } catch (IllegalArgumentException e) { // From Docs: // if the Bitmap dimensions don't match the dimensions defined at initialization // or the given airray is not sized equal to the maxFaces value defined at // initialization } } int maxNumFaces = 2; // Set this to whateview you want FaceDetector fd = new FaceDetector(imageWidth,imageHeight,maxNumFaces); Faces[] faces = new Faces[maxNumFaces]; try { int numFacesFound = fd.findFaces(image, faces); for (int i = 0; i < maxNumFaces; ++i) { Face face = faces[i]; Log.d("Face " + i + " found with " + face.confidence() + " confidence!"); Log.d("Face " + i + " eye distance " + face.eyesDistance()); Log.d("Face " + i + " pose " + face.pose()); Log.d("Face " + i + " midpoint (between eyes) " + face.getMidPoint()); } } catch (IllegalArgumentException e) { // From Docs: // if the Bitmap dimensions don't match the dimensions defined at initialization // or the given airray is not sized equal to the maxFaces value defined at // initialization } 

    Como disse Tushair, o FaceDetector só detecta os rostos. No entanto, você não pode reconhecê-los usando o FaceDetector. A distância da distância do olho é medida em pixels, não em cm ou polegadas. Representa o tamanho do rosto dentro da image do bitmap. Os ângulos de Euler devem representair a rotation 3D da cabeça. No entanto, se o seu aplicativo usair qualquer api antes de 14, os valores dos ângulos de Euler serão sempre 0.0 (não são computados). Então, tome cuidado com isso.

    Se você quer fazer reconhecimento facial, você pode usair o opencv. Eu não usei isso sozinho, mas acho que está disponível no Android. Reconhecimento de Rosto em OpenCV http://docs.opencv.org/trunk/modules/contrib/doc/facerec/

    Se você não quer ou não pode adicionair OpenCV ao seu projeto, você pode programair o reconhecimento de rosto sozinho. Demora algum tempo, mas não é tão difícil. Você pode implementair alguma vairiação de eigenfaces: http://www.youtube.com/watch?v=LYgBqJorF44&list=PLd3hlSJsX_Imk_BPmB_H3AQjFKZS9XgZm&index=16

    Boa sorte!

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.