Я пытаюсь определить лицо в предпросмотре камеры в android с помощью Google Vision. Это то, что я сделал
@Override
public void onPreview(final byte[] nv21, Camera camera) {
Camera.Parameters parameters = camera.getParameters();
ByteArrayOutputStream out = new ByteArrayOutputStream();
YuvImage yuvImage = new YuvImage(nv21, parameters.getPreviewFormat(), parameters.getPreviewSize().width, parameters.getPreviewSize().height, null);
yuvImage.compressToJpeg(new Rect(0, 0, parameters.getPreviewSize().width, parameters.getPreviewSize().height), 90, out);
byte[] imageBytes = out.toByteArray();
currentBitmap= BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
final Frame frame = new Frame.Builder().setBitmap(currentBitmap).build();
SparseArray<Face> faces = detector.detect(frame);
if(faces.size()>0){
//do some operation
}
}
Теперь проблема в том, что если я делаю так, предварительный просмотр камеры не плавный, а устройство нагревается, однако получение растрового изображения не вызывает никаких проблем. Проблема появляется, когда я пытаюсь выполнить операцию, связанную с обнаружением лица.
Так я инициализирую детектор object
FaceDetector detector = new FaceDetector.Builder(this)
.setTrackingEnabled(true)
.setProminentFaceOnly(true)
.setLandmarkType(FaceDetector.ALL_LANDMARKS)
.setClassificationType(FaceDetector.ALL_CLASSIFICATIONS)
.build();