2016-06-14 4 views
0

Я использую один из примеров api face tracker и немного модифицировал код, чтобы узнать, будет ли он работать в соответствии с моей идеей для приложения. что я хочу сделать, я хочу добавить маски для лица после обнаружения лица.Google Vision API Захват изображения с графическим наложением

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

Image being saved

image being displayed on mobile screen

+0

Я также пытаюсь то же самое. Дайте мне знать, если вы достигли этого? – SANAT

ответ

0

я достиг чего-то похожее на это в проекте я работал над в прошлом, но больше не имеют доступа к проекту.

Когда вы вызываете свой метод захвата, вам необходимо сохранить ссылку на положение лица.

Я не уверены, сколько контроля видение апи дает вам над камерой, так что вы либо:

сделать снимок и перед сохранением файла добавьте маску ресурс поверх возвращенного растрового изображения.

или

загрузки сохраненного файла добавьте маску ресурса поверх него.

Если у вас есть какие-то вопросы, я буду оглядываться позже.

Редактировать Поворот Bitmap

bitmap = android.provider.MediaStore.Images.Media 
       .getBitmap(cr, selectedImage); 
ExifInterface exif = new ExifInterface("/storage/emulated/0/Pic.jpg");  
String exifOrientation = exif.getAttribute(ExifInterface.TAG_ORIENTATION); 
int i = Integer.parseInt(exifOrientation); 
bitmap = rotateImage(bitmap, i); 

//

private Bitmap rotateImage(Bitmap bm, int i) { 
    Matrix matrix = new Matrix(); 
    switch (i) { 
     case ExifInterface.ORIENTATION_NORMAL: 
      return bm; 
     case ExifInterface.ORIENTATION_FLIP_HORIZONTAL: 
      matrix.setScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_180: 
      matrix.setRotate(180); 
      break; 
     case ExifInterface.ORIENTATION_FLIP_VERTICAL: 
      matrix.setRotate(180); 
      matrix.postScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_TRANSPOSE: 
      matrix.setRotate(90); 
      matrix.postScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_90: 
      matrix.setRotate(90); 
      break; 
     case ExifInterface.ORIENTATION_TRANSVERSE: 
      matrix.setRotate(-90); 
      matrix.postScale(-1, 1); 
      break; 
     case ExifInterface.ORIENTATION_ROTATE_270: 
      matrix.setRotate(-90); 
      break; 
     default: 
      return bm; 
    } 
    try { 
     Bitmap bmRotated = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true); 
     bm.recycle(); 
     return bmRotated; 
    } catch (OutOfMemoryError e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 
+0

Спасибо и да, я уже сделал что-то подобное. но при этом было много проблем. некоторые устройства камеры дают повернутое или даже инвертированное изображение при захвате. –

+0

@UsmanGhauri У меня была такая же проблема. вращение изображения. Я добавил код, который решил это на всех проверенных устройствах. – Lonergan6275

+0

Я пробовал с вашим кодом, но он дает черное изображение, так как это вид сверху. У вас есть другое решение для этого ...? – vijaypalod

 Смежные вопросы

  • Нет связанных вопросов^_^