2017-08-24 96 views
0

我有一个模块可以将卡通脸放在眼睛或其他任何地方的实时相机预览上。我正在使用Moodme Sdk。我已经实现了相机预览。我得到具有里程碑意义的x和y轴的价值。但我不知道我在哪里添加这些地标,以及如何使用地标将该图像放在眼睛上。这是在实时相机上获取人脸时的代码。如何在使用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; 
} 

我也有使用人脸检测库,但没有给我准确result.Is有任何好的图书馆进行人脸检测并把图像或面罩上的摄像头预览。任何帮助将不胜感激。

回答

1

有许多图书馆可以在相机预览中添加一个面罩。几乎所有人都使用OpenCV。看看这些库。

Android GPUimage似乎对相机预览添加图片。类似的question使用此库在相机预览中添加面罩。您可以查看问题中发布的答案。

FaceFilter库执行相同的工作,但在捕获的图像上。但是,您可以查看作者发布的库的tutorial,并将其与脸部检测进行集成。有几个教程面部检测。这个tutorial解释了如何实现人脸检测,同时也覆盖它的图形。尽管本教程中覆盖的图形并不多,但它可能会解决您的问题。

+0

先生,我已经用上面的一些库。但这是image.and上的图像,我想要在其他.png图像上进行实时相机预览。而且我只需要android的库,而不需要ios。 –

+0

检查编辑的答案。 – Abhi

+0

先生其实我不想只有人脸检测。我想要眼睛和耳朵的x和y轴,尽管我正在获取眼睛的确切位置,但我无法找到耳朵的x和y轴,因此我可以将图像放在眼睛上。以上链接我已经尝试过。 –