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轴,因此我可以将图像放在眼睛上。以上链接我已经尝试过。 –