2017-02-10 6 views
0

Я использую Google Vision для обнаружения лиц на Android. В настоящее время мой код:Как правильно перевести обнаруженные координаты лица с передней камеры

public void onPreviewFrame(byte[] data, Camera camera) { 

     // creating Google Vision frame from a camera frame for face recognition 
     com.google.android.gms.vision.Frame frame = new com.google.android.gms.vision.Frame.Builder() 
       .setImageData(ByteBuffer.wrap(data), previewWidth, 
         previewHeight, ImageFormat.NV21) 
       .setId(frameId++) 
       .setRotation(com.google.android.gms.vision.Frame.ROTATION_270) 
       .setTimestampMillis(lastTimestamp).build(); 

     // recognize the face in the frame 
     SparseArray<Face> faces = detector.detect(frame); 

     // wrong coordinates 
     float x = faces.valueAt(0).getPosition().x; 
     float y = faces.valueAt(0).getPosition().y; 
} 

Проблема заключается в том, что x и y не являются правильными и даже отрицательные иногда. Я знаю, что для того, чтобы получить правильные координаты, нужно как-то повернуть, но как именно?

+0

http://stackoverflow.com/questions/39281320/how-to-detect-the-corners-center-xy-coordinates-using-googles- face-api Это имеет смысл. – bvk256

ответ

1

Эти координаты могут быть отрицательными, если лицо выходит за пределы верхнего и/или левого краев изображения. Несмотря на то, что голова может быть не полностью на фотографии, детектор лица оценивает ограничивающий прямоугольник лица за пределами границ изображения, основываясь на видимости.

Координаты должны быть корректными относительно изображения. Однако, если вы просматриваете предварительный просмотр с фронтальной камеры, обратите внимание, что этот предварительный просмотр отображается в обратном порядке (например, зеркальное изображение). В этом случае вам нужно будет отменить координаты, чтобы нарисовать предварительный просмотр. Смотрите пример того, как это сделано здесь:

https://github.com/googlesamples/android-vision/blob/master/visionSamples/FaceTracker/app/src/main/java/com/google/android/gms/samples/vision/face/facetracker/ui/camera/GraphicOverlay.java#L101