Android는 손 키 포인트 인식 기능을 매우 간단하게 통합합니다.

머리말

이전 기사 "Huawei HMS ML Kit 인체 골격 인식 기술을 사용하여 Android는 사람의 자세 및 동작 캡처를 빠르게 실현"에서 머리, 목, 어깨, 팔꿈치, 손목 및 엉덩이의 상단을 찾을 수있는 HMS ML Kit 인체 골격 인식 기술을 소개했습니다. , 무릎, 발목 및 기타 인체의 핵심 포인트. HMS ML Kit는 인체의 핵심 지점을 식별하는 것 외에도 개발자에게 인간과 컴퓨터가 상호 작용하는 손가락 끝, 관절 지점, 손목 지점을 포함하여 손의 21 개 핵심 지점을 찾을 수있는 손 키 지점 인식 기술을 제공합니다. 경험이 더 풍부합니다.

애플리케이션 시나리오

손 키 포인트 인식 기술은 인생에서 많은 응용 시나리오를 가지고 있습니다. 예를 들어, 짧은 동영상 촬영용 소프트웨어에이 기술이 통합되면 손의 요점에 따라 귀엽거나 재미있는 특수 효과를 생성하여 짧은 동영상의 관심을 높일 수 있습니다.
여기에 사진 설명 삽입

또는 스마트 홈 지향 시나리오에서 스마트 가전 제품에 대한 원격 제어 지침으로 일부 제스처를 사용자 지정하여보다 스마트 한 인간-컴퓨터 상호 작용 방법을 수행 할 수 있습니다.
여기에 사진 설명 삽입

개발 전투

다음은 비디오 스트림 인식을 예로 들어 Huawei의 HMS ML Kit 손 키 포인트 인식 기술을 빠르게 통합하는 방법입니다.

1. 개발 준비

자세한 준비 단계는 Huawei Developer Alliance를 참조하십시오.

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

주요 개발 단계는 다음과 같습니다.

1.1 프로젝트 수준 Gradle에서 Maven웨어 하우스 주소 구성

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 애플리케이션 수준 Gradle에서 SDK 종속성 구성

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 파일 헤더에 구성 추가

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

1.4 AndroidManifest.xml 파일에 다음 문을 추가하여 기계 학습 모델을 기기에 자동으로 업데이트합니다.

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

1.5 카메라 권한 신청 및 로컬 파일 권한 읽기

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

2. 코드 개발

2.1 손 키 포인트 분석기 만들기

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 개발자는 MLAnalyzer.MLTransactor <T> 인터페이스를 구현하는 인식 결과 처리 클래스 "HandKeypointTransactor"를 만들고이 클래스의 "transactResult"메서드를 사용하여 검색 결과를 얻고 특정 서비스를 구현합니다. 감지 결과에는 각 손가락 포인트의 좌표 정보 외에도 손바닥 신뢰도 및 각 포인트의 신뢰 값이 포함됩니다. 잘못 인식 된 잘못된 손바닥은 신뢰 값을 기준으로 필터링 할 수 있습니다. 실제 응용에서는 오인식 허용 범위를 기준으로 할 수 있습니다. 정도, 설정 임계 값의 유연한 적용.

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 분석기와 결과 프로세서의 바인딩을 실현하기 위해 인식 결과 프로세서를 설정합니다.

analyzer.setTransactor(new HandKeypointTransactor());

2.4 LensEngine 생성.이 클래스는 ML Kit SDK에서 제공하며 카메라 동적 비디오 스트림을 캡처하여 분석기에 전달하는 데 사용됩니다. 카메라 디스플레이 크기는 320320 픽셀 이상 1920 1920 픽셀 이하로 설정하는 것이 좋습니다 .

2.5 run 메서드를 호출하고 카메라를 시작하고 비디오 스트림을 읽고 식별합니다.

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

2.6 감지가 완료되면 분석기를 중지하고 감지 리소스를 해제합니다.

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

데모 효과

다음 데모는 다양한 제스처에서 손 키 포인트 인식의 효과를 보여줍니다. 개발자는 실제 개발 요구에 따라 확장 할 수 있습니다.
여기에 사진 설명 삽입

Github 소스 코드

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

자세한 개발 지침은 Huawei Developer Alliance의 공식 웹 사이트를 참조하십시오.

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

자세한 내용은 다음을 참조하십시오 :
Huawei Developer Alliance 공식 웹 사이트 :https://developer.huawei.com/consumer/cn/hms를
통해 개발 지침 문서 얻으십시오.https://developer.huawei.com/consumer/cn/doc/development
개발자 토론에 참여 하려면 Reddit 커뮤니티로 이동하십시오.https://www.reddit.com/r/HMSCore/
데모 및 샘플 코드 다운로드 하려면 Github로 이동하십시오.https://github.com/HMS-Core
통합 문제 해결하려면 Stack Overflow로 이동하세요.https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab= 최신


원본 링크 :https://developer.huawei.com/consumer/cn/forum/topicview?tid=0203346162792430439&fid=18
저자 : 잎 떠나기

추천

출처blog.51cto.com/14772288/2539212