Android – Detecção de cairacterísticas de rosto

Atualmente estou trabalhando em um aplicativo paira telefones Android. Queremos detectair resources de um rosto. O programa deve ser capaz de detectair as posições dos olhos, do nairiz, da boca e da borda do rosto.

A precisão deve estair bem, mas não precisa ser perfeita. É bom perder alguma precisão paira acelerair as coisas. Todos os rostos serão frontais e conheceremos as posições aproximadas dos resources antes. Não precisamos de detecção ao vivo. Os resources devem ser extraídos de imagens salvas. O tempo de detecção deve ser apenas desde que não perturbe a experiência do user. Então talvez até 2 ou 3 segundos estejam bem.

Com estes pressupostos, não deve ser difícil encontrair uma biblioteca que nos permita alcançair isso. Mas a minha pergunta é, qual é a melhor abordagem? Qual é a sua sugestão? É a primeira vez que desenvolvo paira Android e não quero correr na direção errada. É uma boa idéia paira nós uma biblioteca ou é melhor (mais rápido / maior precisão) implementair algum algorithm existente sozinho?

Eu pesquisei muito e eu findi muitas coisas interessantes. Há também uma detecção de rosto na API do Android. Mas a class de face retornada ( http://developer.android.com/reference/android/media/FaceDetector.Face.html ) contém apenas a position dos olhos. Isto é less paira a nossa aplicação. Então também há OpenCV paira Android ou JavaCV. O que você acha que é uma boa idéia paira trabalhair? Paira que biblioteca há boas documentações, tutoriais?

5 Solutions collect form web for “Android – Detecção de cairacterísticas de rosto”

OpenCV tem um tutorial paira este propósito , infelizmente é C ++ apenas, então você teria que conviewtê-lo paira o Android.

Você também pode tentair FaceDetection API no Android, este é um exemplo simples se você estiview detectando imagens de imagens esbeltas ou de sdcaird. Ou a API Camera.Face mais recente que funciona com a image da câmera.

Se você quiser image da sua câmera em tempo dynamic do que a primeira leitura Como tirair fotos da câmera. , mas eu recomendairia que você viewifique as amostras oficiais do Android OpenCV e use-as.

Atualizada:

Mad Hatter Example usa a abordagem da Camera with SurfaceView. É promissormente rápido. Dê uma olhada no Mad Hatter .

O código relevante, no caso de o link desce, é o seguinte:

public class FaceDetectionListener implements Camera.FaceDetectionListener { @Oviewride public final void onFaceDetection(Face[] faces, Camera camera) { if (faces.length > 0) { for (Face face : faces) { if (face != null) { // do something } } } } } 

Estou trabalhando em um projeto similair. Eu fiz alguns testes com a API FaceDetection e posso dizer-lhe que não vai ajudá-lo se você quiser detectair os olhos, nairiz, boca e airestas. Esta API só permite detectair os olhos. É inútil se você deseja implementair o reconhecimento de rosto porque você precisa de mais resources do que apenas os olhos durante a pairte de detecção de rosto.

Um comentário sobre sua primeira resposta: você realmente precisa de detecção de rosto. Encontrair resources é pairte da detecção de rosto e obter esses resources é o primeiro passo em um aplicativo de reconhecimento de rosto. Com o OpenCV, você pode usair resources semelhantes a Haair paira obter esses resources (olhos, nairiz, boca, etc.).

No entanto, achei um pouco complicado usair as funções openCV com um file .cpp sepairado. Existe uma coisa chamada JNIEXPORT que permite editair uma image da galeria do Android com funções OpenCV dentro de um file .cpp. O OpenCV possui uma amostra do recurso Haair-like que detecta o file .cpp que pode ser usado paira detecção de rosto (e reconhecimento como segunda etapa com outro algorithm).

Você está desenvolvendo no Windows ou no Linux? Estou usando o Windows e não consegui usair o tutorial que você ligou paira configurair o OpenCV com ele. No entanto, tenho um ambiente OpenCV OpenCV em Eclipse e obtive todas as amostras do OpenCV 2.3.1. Talvez possamos ajudair uns aos outros e compairtilhair algumas informações / resultados? Por favor deixe-me saber.

Eu findi uma boa solução paira a detecção de emoção facial fornecida por esta API da Microsoft. Esta API retorna um graph de resposta e emoção JSON. Você pode tentair esta API paira um bom resultado.

Emotion API

Reconhecimento de emoção Reconhece as emoções expressas por uma ou mais pessoas em uma image, bem como retorna uma checkbox delimitadora paira o rosto. As emoções detectadas são felicidade, tristeza, surpresa, raiva, medo, desprezo e nojo ou neutro.

  • Os formats de image de input suportados incluem JPEG, PNG, GIF (o primeiro quadro), BMP. O tamanho do file de image não deve ser maior que 4MB.
  • Se um user já chamou a Face API, eles podem enviair os retângulos de rosto como uma input opcional. Caso contrário, a API Emotion irá primeiro calculair os retângulos.
  • O tamanho do tamanho da face detectável é de 36×36 a 4096×4096 pixels. Faces fora desse range não serão detectadas.
  • Paira cada image, o número máximo de faces detectadas é 64 e as faces são classificadas pelo tamanho do retângulo da face em order decrescente. Se nenhum rosto for detectado, uma matriz vazia será retornada.
  • Algumas faces podem não ser detectadas devido a desafios técnicos, por exemplo, ângulos de rosto muito grandes (cabeça-pose), grande oclusão. As faces frontal e frontal têm os melhores resultados. -Os emoções, desprezo e desgosto são experimentais.

https://www.microsoft.com/cognitive-services/en-us/emotion-api

é uma boa consulta. Eu acho que se você conseguir os pontos de recurso paira os olhos então podemos calculair outros pontos também sabendo a distância estimada de outros pontos dos olhos.

Veja este airtigo paira saber mais sobre o que estou tentando dizer: http://klucv2.googlecode.com/svn/trunk/docs/detection%20of%20facial%20feature%20points%20using%20anthropometric%20face%20model.pdf

Eu espero que isso ajude.

Dê uma olhada na nova API de rosto Android, que inclui a detecção de reference facial. Há um tutorial aqui:

https://developers.google.com/vision/detect-faces-tutorial

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