Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cómo asignar coordenadas de marco a superposición en la visión

Siento que esta pregunta ya está resuelta muchas veces, pero no puedo entenderlo. Básicamente estaba siguiendo este pequeño Tutorial sobre la visión móvil y lo había completado. Después de eso traté de detectar Objetos yo mismo empezando con un ColorBlob y dibujando sus bordes.

La idea es comenzar en el medio del marco (sujetando el objeto en el centro de la cámara a propósito) y detectar los bordes de ese objeto por su color. Funciona siempre y cuando mantenga el teléfono en modo horizontal (Frame.ROTATION_0). Tan pronto como estoy en modo de retrato (Frame.Rotation_90) el Rect de delimitación se dibuja rotado, por lo que un objeto con más altura se dibuja con más ancho, y también un poco fuera.

  • Biblioteca de códigos de barras de Google Vision no encontrada
  • Unknown Codificación para Data Matrix codificada con google Barcode Scanner (Vision)
  • Ejemplos de la API de Google Visión: Obtenga el enfoque de CameraSource
  • Grabadora de medios con Google Vision API
  • Cambiar a Camera2 en Android Vision API
  • Escaneo de código QR con Android Mobile Vision API
  • Los documentos dicen que un detector siempre entrega coords a un marco erguido, así que ¿cómo se supone que calculo el rectángulo delimitador coords en consecuencia a su rotación? No creo que importe mucho, pero aquí es cómo encuentro el color Rect

      public Rect getBounds(Frame frame){ int w = frame.getMetadata().getWidth(); int h = frame.getMetadata().getHeight(); int scale = 50; int scaleX = w / scale; int scaleY = h / scale; int midX = w / 2; int midY = h / 2; float ratio = 10.0 Rect mBoundary = new Rect(); float[] hsv = new float[3]; Bitmap bmp = frame.getBitmap(); int px = bmp.getPixel(midX, midY); Color.colorToHSV(px, hsv); Log.d(TAG, "detect: mid hsv: " + hsv[0] + ", " + hsv[1] + ", " + hsv[2]); float hue = hsv[0]; float nhue; int x, y; for (x = midX + scaleX; x < w; x+=scaleX){ px = bmp.getPixel(x, midY); Color.colorToHSV(px, hsv); nhue = hsv[0]; if (nhue <= (hue + ratio) && nhue >= (hue - ratio)){ mBoundary.right = x } else { break; } } for (x = midX - scaleX; x >= 0; x-= scaleX){ px = bmp.getPixel(x, midY); Color.colorToHSV(px, hsv); nhue = hsv[0]; if (nhue <= (hue + ratio) && nhue >= (hue - ratio)){ mBoundary.left = x } else { break; } } for (y = midY + scaleY; y < h; y+=scaleY){ px = bmp.getPixel(midX, y); Color.colorToHSV(px, hsv); nhue = hsv[0]; if (nhue <= (hue + ratio) && nhue >= (hue - ratio)){ mBoundary.bottom = y; } else { break; } } for (y = midY - scaleY; y >= 0; y-=scaleY){ px = bmp.getPixel(midX, y); Color.colorToHSV(px, hsv); nhue = hsv[0]; if (nhue <= (hue + ratio) && nhue >= (hue - ratio)){ mBoundary.top = y } else { break; } } return mBoundary; } 

    Entonces simplemente lo dibujo en el método de dibujo de GraphicOverlay.Graphic s en el lienzo. Ya utilizo los métodos transformX/Y en el Gráfico y el pensamiento, que también explicará la rotación. También utilizo la clase CameraSource y CameraSourcePreview proporcionada por las muestras.

  • Cómo obtener datos del servicio a la actividad
  • SetRepeating () de AlarmManager se repite después de 1 minuto sin importar la hora (5 segundos en este caso, API 18+)
  • Reproducción de vídeos de YouTube con ExoPlayer
  • Diferencia entre getExternalFilesDir y getExternalStorageDirectory ()
  • Android de programación de audio pesadilla - soundpool, audiotrack arrghh?
  • ¿Subir varias imágenes con volley?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.