Android integra rápidamente capacidades de reconocimiento de puntos clave de mano súper simple

Prefacio

En el artículo anterior "Uso de la tecnología de reconocimiento de esqueleto humano HMS ML Kit de Huawei, Android Realice rápidamente la captura de acción y postura humana", presentamos la tecnología de reconocimiento de esqueleto humano HMS ML Kit, que puede ubicar la parte superior de la cabeza, cuello, hombros, codos, muñecas y caderas. , Rodillas, tobillos y otros puntos clave del cuerpo humano. Además de identificar los puntos clave del cuerpo humano, HMS ML Kit también proporciona a los desarrolladores tecnología de reconocimiento de puntos clave de la mano, que puede ubicar 21 puntos clave de la mano, incluidas las yemas de los dedos, los puntos de las articulaciones y los puntos de la muñeca, que son interactivos entre humanos y computadoras. La experiencia es más rica.

Escenarios de aplicación

La tecnología de reconocimiento de puntos clave de mano tiene muchos escenarios de aplicación en la vida. Por ejemplo, después de que el software para grabar videos cortos integra esta tecnología, puede generar algunos efectos especiales lindos o divertidos según los puntos clave de la mano, y aumentar el interés del video corto.
Inserte la descripción de la imagen aquí

O en un escenario orientado al hogar inteligente, puede personalizar algunos gestos como instrucciones de control remoto para electrodomésticos inteligentes para realizar algunos métodos de interacción humano-computadora más inteligentes.
Inserte la descripción de la imagen aquí

Combate de desarrollo

A continuación, se explica cómo integrar rápidamente la tecnología de reconocimiento de puntos clave de mano HMS ML Kit de Huawei, tomando como ejemplo el reconocimiento de transmisión de video.

1. Preparación para el desarrollo

Para conocer los pasos de preparación detallados, consulte Huawei Developer Alliance:

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/ml-process-4

Estos son los pasos de desarrollo clave.

1.1 Configurar la dirección del almacén de Maven en gradle a nivel de proyecto

buildscript {
    repositories {
             ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}
 dependencies {
                 ...
        classpath 'com.huawei.agconnect:agcp:1.3.1.300'
    }
allprojects {
    repositories {
             ...
        maven {url 'https://developer.huawei.com/repo/'}
    }
}

1.2 Configurar las dependencias del SDK en gradle a nivel de aplicación

dependencies{
    // 引入基础SDK
    implementation 'com.huawei.hms:ml-computer-vision-handkeypoint:2.0.2.300'
    // 引入手部关键点检测模型包
    implementation 'com.huawei.hms:ml-computer-vision-handkeypoint-model:2.0.2.300'
}

1.3 Agregar configuración al encabezado del archivo

apply plugin: 'com.android.application'
apply plugin: 'com.huawei.agconnect'

1.4 Agregue la siguiente declaración al archivo AndroidManifest.xml para actualizar automáticamente el modelo de aprendizaje automático en el dispositivo

<meta-data 
android:name="com.huawei.hms.ml.DEPENDENCY" 
android:value= "handkeypoint"/>

1.5 Solicite el permiso de la cámara y lea el permiso del archivo local

<!--相机权限-->
<uses-permission android:name="android.permission.CAMERA" />
<!--读权限-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

2. Desarrollo de código

2.1 Crear un analizador de puntos clave de mano

MLHandKeypointAnalyzerSetting setting = new MLHandKeypointAnalyzerSetting.Factory()
      // MLHandKeypointAnalyzerSetting.TYPE_ALL表示所有结果都返回。
      // MLHandKeypointAnalyzerSetting.TYPE_KEYPOINT_ONLY表示只返回手部关键点信息。
      // MLHandKeypointAnalyzerSetting.TYPE_RECT_ONLY表示只返回手掌区域信息。
      .setSceneType(MLHandKeypointAnalyzerSetting.TYPE_ALL)
      // 设置同一张图片中最多支持检测的手部区域个数。默认最多支持10个手部区域信息检测。
      .setMaxHandResults(1)
      .create();
MLHandKeypointAnalyzer analyzer = MLHandKeypointAnalyzerFactory.getInstance().getHandKeypointAnalyzer(setting);

2.2 El desarrollador crea la clase de procesamiento de resultados de reconocimiento "HandKeypointTransactor", que implementa la interfaz MLAnalyzer.MLTransactor <T>, y utiliza el método "transactResult" en esta clase para obtener resultados de detección e implementar servicios específicos. Además de la información de las coordenadas de cada punto del dedo, el resultado de la detección también incluye la confianza de la palma y el valor de confianza de cada punto. La palma inválida reconocida incorrectamente se puede filtrar en función del valor de confianza. En aplicaciones reales, se puede basar en la tolerancia para el reconocimiento erróneo Grado, aplicación flexible del umbral de ajuste.

public class HandKeypointTransactor implements MLAnalyzer.MLTransactor<List<MLHandKeypoints>> {
          @Override
          public void transactResult(MLAnalyzer.Result<List<MLHandKeypoints>> results) {
              SparseArray<List<MLHandKeypoints>> analyseList  = result.getAnalyseList();
              // 开发者根据需要处理识别结果,需要注意,这里只对检测结果进行处理。
              // 不可调用ML Kit提供的其他检测相关接口。
          }
         @Override
         public void destroy() {
            // 检测结束回调方法,用于释放资源等。
        }
}

2.3 Configure el procesador de resultados de reconocimiento para que realice la vinculación del analizador y el procesador de resultados.

analyzer.setTransactor(new HandKeypointTransactor());

2.4 Crear LensEngine, esta clase es proporcionada por ML Kit SDK, que se utiliza para capturar el flujo de video dinámico de la cámara y pasarlo al analizador. Se recomienda configurar el tamaño de visualización de la cámara en no menos de 320 320 píxeles y no más de 1920 1920 píxeles.

2.5 Llame al método de ejecución, encienda la cámara, lea la transmisión de video e identifique.

  // 请自行实现SurfaceView控件的其他逻辑。
  SurfaceView mSurfaceView = findViewById(R.id.surface_view);
  try {
          lensEngine.run(mSurfaceView.getHolder());
  } catch (IOException e) {
          // 异常处理逻辑。
   }

2.6 Una vez completada la detección, detenga el analizador y libere los recursos de detección.

  if (analyzer != null) {
          analyzer.stop();
  }
  if (lensEngine != null) {
          lensEngine.release();
   }

Efecto de demostración

La siguiente demostración muestra el efecto del reconocimiento de puntos clave de la mano en diferentes gestos.Los desarrolladores pueden expandirse de acuerdo con las necesidades de desarrollo reales.
Inserte la descripción de la imagen aquí

Código fuente de Github

https://github.com/HMS-Core/hms-ml-demo/blob/master/MLKit-Sample/module-body/src/main/java/com/mlkit/sample/activity/HandKeypointActivity.java

Para obtener pautas de desarrollo más detalladas, consulte el sitio web oficial de Huawei Developer Alliance

https://developer.huawei.com/consumer/cn/hms/huawei-mlkit

Para obtener más detalles, consulte:
Sitio web oficial de Huawei Developer Alliance:https://developer.huawei.com/consumer/cn/hms para
obtener documentos de orientación de desarrollo:https://developer.huawei.com/consumer/cn/doc/development Para
participar en las discusiones de los desarrolladores, vaya a la comunidad de Reddit:https://www.reddit.com/r/HMSCore/ Para
descargar la demostración y el código de muestra, vaya a Github:https://github.com/HMS-Core para
resolver problemas de integración, vaya a Stack Overflow:https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


Enlace original:https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203346162792430439&fid=18
Autor: dejar hojas

Supongo que te gusta

Origin blog.51cto.com/14772288/2539212
Recomendado
Clasificación