Es ist möglich, Camera2 API mit Google Vision API zu verwenden.
Zunächst erhält der Google Vision API-Gesichtsdetektor ein Objekt Frame, das zur Analyse verwendet wird (Gesichter und seine Orientierungspunkte erkennen).
Die Camera1-API bietet die Vorschaubilder im NV21-Bildformat, was für uns ideal ist. Der Google Vision Frame.Builder unterstützt sowohl setImageData (ByteBuffer im NV16-, NV21- oder YV12-Bildformat) als auch setBitmap, um ein Bitmap als zu bearbeitende Vorschaubilder zu verwenden.
Ihr Problem ist, dass die Camera2-API die Vorschaubilder in einem anderen Format bereitstellt. Es ist YUV_420_888. Damit alles funktioniert, müssen Sie die Vorschaubilder in eines der unterstützten Formate konvertieren.
Sobald Sie die Camera2 Preview Frames von Ihrem ImageReader als Image erhalten haben, können Sie diese Funktion verwenden, um sie in ein unterstütztes Format (in diesem Fall NV21) zu konvertieren.
private byte[] convertYUV420888ToNV21(Image imgYUV420) {
// Converting YUV_420_888 data to YUV_420_SP (NV21).
byte[] data;
ByteBuffer buffer0 = imgYUV420.getPlanes()[0].getBuffer();
ByteBuffer buffer2 = imgYUV420.getPlanes()[2].getBuffer();
int buffer0_size = buffer0.remaining();
int buffer2_size = buffer2.remaining();
data = new byte[buffer0_size + buffer2_size];
buffer0.get(data, 0, buffer0_size);
buffer2.get(data, buffer0_size, buffer2_size);
return data;
}
Dann können Sie das zurück byte [] verwenden, um einen Google Vision-Rahmen zu erstellen:
outputFrame = new Frame.Builder()
.setImageData(nv21bytes, mPreviewSize.getWidth(), mPreviewSize.getHeight(), ImageFormat.NV21)
.setId(mPendingFrameId)
.setTimestampMillis(mPendingTimeMillis)
.setRotation(mSensorOrientation)
.build();
Schließlich Sie den Detektor mit dem erstellten Rahmen nennen:
mDetector.receiveFrame(outputFrame);
Wie auch immer, Wenn Sie mehr darüber wissen möchten, können Sie mein kostenloses Arbeitsbeispiel auf GitHub testen: Camera2Vision. Ich hoffe, ich habe geholfen :)
Danke in fortgeschrittenem, aber ich habe diese Informationen gelesen ...: D – Vietnt134