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有任何好的圖書館進行人臉檢測並把圖像或面罩上的攝像頭預覽。任何幫助將不勝感激。
先生,我已經用上面的一些庫。但這是image.and上的圖像,我想要在其他.png圖像上進行實時相機預覽。而且我只需要android的庫,而不需要ios。 –
檢查編輯的答案。 – Abhi
先生其實我不想只有人臉檢測。我想要眼睛和耳朵的x和y軸,儘管我正在獲取眼睛的確切位置,但我無法找到耳朵的x和y軸,因此我可以將圖像放在眼睛上。以上鍊接我已經嘗試過。 –