2017-08-24 93 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軸,因此我可以將圖像放在眼睛上。以上鍊接我已經嘗試過。 –