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


¿Cómo se puede utilizar Android Camera APIs en aplicaciones que no sean de la Cámara?

Me gustaría usar algunas API de Android 4 en una aplicación que no sea de cámara.

La API incluye algunas clases de detección facial muy agradables, incluida la clase Camera.Face disponible desde API 14. Me gustaría aplicar las mismas clases de Detección de rostros para implementar la detección de rostros en las imágenes guardadas en el dispositivo. Yo preferiría usar esto para procesar imágenes almacenadas en el propio dispositivo (por ejemplo: etiquetado social, manipulación de imagen de cara, etc.)

Necesito orientación sobre cómo llevar a cabo esta tarea de reutilización.

  • onActivityResult devuelto por una cámara, Intent null
  • API de la cámara: problemas con dispositivos cruzados
  • Cámara Android: la intención de los datos devuelve null
  • Control de linterna en Marshmallow
  • Cámara: la función setDisplayOrientation no funciona para Samsung Galaxy ACE con Android 2.3.6
  • Apertura de la cámara en un proceso diferente
  • 3 Solutions collect form web for “¿Cómo se puede utilizar Android Camera APIs en aplicaciones que no sean de la Cámara?”

    El FaceDetectionListener es lo que desea utilizar para detectar rostros, pero sólo escucha en la cámara. Esa es su única función nativa. Si realmente quieres usarlo en imágenes en el dispositivo del usuario, sugeriría simplemente descargar el código fuente de la API de la cámara y adaptar el método que quieras a tus necesidades.

    Usted puede encontrar la fuente para todo el código androide de la acción aquí: https://android.googlesource.com/

    ¡Buena suerte!

    Si lo que necesita es detectar rostros en las imágenes almacenadas en el dispositivo, definitivamente puede hacer esto sin hackear el código fuente de android!

    Hay una API de FaceDetector que está disponible bajo el paquete android.media desde la API 1, que acepta Bitmap como entrada ( formateada en formato 565 ) y le da la posición de las caras en esa imagen.

    Estos son los pasos que necesita:

    1- Cargar el Bitmap y convertirlo al 565 format (suponiendo que tenga el archivo facesPicture bajo sus recursos facesPicture )

     Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.facesPicture); Bitmap bitmap = originalBitmap .copy(Bitmap.Config.RGB_565, true); originalBitmap .recycle(); // allow the GC to collect this object 

    2- Defina la matriz de Face para contener la información de rostros detectados e inicialice el FaceDetector

     int MAX_FACES = 20; // assuming that the image will have maximum 20 faces FaceDetector.Face[] faces = new FaceDetector.Face[MAX_FACES]; FaceDetector faceDetector = new FaceDetector(bitmap.getWidth(), bitmap.getHeight(), MAX_FACES); 

    3- Búsqueda de las caras y resultados del proceso

     int facesCount = faceDetector.findFaces(bitmap, faces); for(int i=0; i<facesCount; i++) { FaceDetector.Face face = faces[i]; float detectionConfidence = face.confidence(); // over 0.3 is OK PointF eyesMidPoint = new PointF(); face.getMidPoint(eyesMidPoint); float eyesDistance = face.eyesDistance(); float rotationX = face.pose(FaceDetector.Face.EULER_X); float rotationY = face.pose(FaceDetector.Face.EULER_Y); float rotationZ = face.pose(FaceDetector.Face.EULER_Z); // Do something with these values } 

    Puede descargar un ejemplo de proyecto completo aquí que se explica en este artículo Detección de rostros con las API de Android

    Si quieres algo más avanzado deberías considerar el uso de OpenCV

    ¿Es usted consciente de la clase FaceDetector ? Está allí desde API v1 y funciona bastante bien. Si necesitas algo más avanzado siempre puedes usar algunos frameworks dedicados, como OpenCV (provisto de algunos enlaces de Java también, para poder integrarlos fácilmente en las aplicaciones de Android)

    Puedes revisar un par de artículos (poco conocidos, pero todavía útiles) que hice hace un tiempo con un colega:

    1. Detección de rostros en Andriod Part-I
    2. Detección de rostros en Andriod Part-II
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.