2017-08-24 7 views
0

J'ai un module pour mettre visage de dessin animé sur les yeux ou ailleurs sur l'aperçu de la caméra en direct. J'utilise Moodme Sdk. J'ai mis en place un aperçu de la caméra. Je reçois la valeur de l'axe des points x et y. Mais je ne sais pas où ajouter ces points de repère et comment mettre cette image sur les yeux en utilisant un point de repère. Ceci est le code pour tout en faisant face à la personne sur la caméra en direct.Comment ajouter un visage de bande dessinée sur l'aperçu de la caméra en utilisant Android

@Override 
public void onImageAvailable(ImageReader reader) { 
    Image image = imageReader.acquireLatestImage(); 
    if (image == null) { 
     return; 
    } 
    ByteBuffer yBuffer = image.getPlanes()[0].getBuffer(); 
    byte[] yBytes = new byte[yBuffer.remaining()]; 
    yBuffer.get(yBytes); 
    ByteBuffer uBuffer = image.getPlanes()[1].getBuffer(); 
    byte[] uBytes = new byte[uBuffer.remaining()]; 
    uBuffer.get(uBytes); 
    ByteBuffer vBuffer = image.getPlanes()[2].getBuffer(); 
    byte[] vBytes = new byte[vBuffer.remaining()]; 
    vBuffer.get(vBytes); 

    tracker.processImageBuffer(yBytes, WIDTH, HEIGHT, WIDTH, MDMTrackerManager.FrameFormat.GRAY); 
    //renderer.updateTextureImage(yBytes, uBytes, vBytes, image.getPlanes()[1].getPixelStride()); 
    image.close(); 

    if (tracker.isFaceTracked()) { 
    // renderer.updateVertices(); 
    } 

    if (tracker.isFaceTracked()) { 
     // translate to opengl coordinates 
     float[] landmarks = new float[66*2]; 


     for (int i = 0; i < 66; ++i) { 
      if(i >=17 && i <27 || i >=36 && i <48) { 
       landmarks[2 * i] = 1.0f - tracker.getLandmarks()[2 * i]/(HEIGHT/2); 
       landmarks[2 * i + 1] = 1.0f - tracker.getLandmarks()[2 * i + 1]/(WIDTH/2); 
      } 
     } 
     // renderer.updateLandmarks(landmarks); 
    } else { 
     // renderer.updateLandmarks(null); 
    } 

    long currentTime = System.currentTimeMillis(); 
    double fps = 1000.0/(currentTime - lastFrameTime); 

    updater.update(fps); 

    lastFrameTime = currentTime; 
} 

J'ai aussi utilisé la bibliothèque de détection des visages Mais ce ne me donne pas result.Is précise t-il une bonne bibliothèque pour la détection des visages et de l'image ou mettre masque sur Aperçu de l'appareil photo. Toute aide serait appréciée.

Répondre

1

Il existe de nombreuses bibliothèques qui permettent d'ajouter un masque sur l'aperçu de la caméra. Presque tous utilisent OpenCV. Découvrez ces bibliothèques.

Le Android GPUimage semble ajouter une image sur Aperçu de l'appareil photo. Un question similaire a utilisé cette bibliothèque pour ajouter un masque sur l'aperçu de la caméra. Vous pouvez jeter un oeil dans la réponse postée sur la question.

La bibliothèque FaceFilter effectue le même travail, mais sur une image capturée. Cependant vous pouvez voir le tutorial pour la bibliothèque postée par l'auteur et l'intégrer avec la détection de visage. Il existe plusieurs tutoriels pour la détection de visage. Ce tutorial explique comment implémenter la détection de visage, tout en superposant des graphiques dessus. Bien qu'il n'y ait pas beaucoup sur les graphiques superposés dans le tutoriel, cela pourrait résoudre votre question.

+0

monsieur j'ai utilisé ci-dessus une bibliothèque. mais c'est pour l'image sur l'image. et je veux l'aperçu de la caméra en direct sur cette autre image .png. Et j'ai besoin de la bibliothèque pour android seulement pas pour ios. –

+0

Vérifiez la réponse éditée. – Abhi

+0

monsieur en fait je ne veux pas que la détection de visage. Je veux l'oeil et l'oreille x et l'axe des y bien que je m obtienne la position exacte d'oeil mais je ne peux pas trouver l'axe x et y d'oreille. Ainsi que je peux mettre l'image sur l'oeil. Ci-dessus lien j'ai déjà essayé. –