Вступление
В наши дни существует так много онлайн-игр, которые вызывают привыкание, в них легко играть и которые подходят для любого возраста. Я давно мечтал создать собственную хитовую игру, но сделать это сложнее, чем кажется. Я искал в Интернете и мне посчастливилось узнать о возможностях HUAWEI ML Kit по обнаружению лиц и ключевых точек руки, которые делают игры намного более увлекательными.
Сценарии применения
Функция обнаружения лица ML Kit определяет до 855 ключевых точек лица и возвращает координаты контуров лица, бровей, глаз, носа, рта и ушей, а также углы. Интеграция функции обнаружения лиц упрощает создание приложения для красоты или позволяет пользователям добавлять специальные эффекты к изображениям лиц, чтобы сделать их более интригующими.
Возможность обнаружения ключевых точек руки может применяться в широком диапазоне сценариев. Например, приложения для коротких видео могут предоставлять различные специальные эффекты, которые пользователи могут применять к своим видео, после интеграции этой возможности, обеспечивая новые источники веселья и прихоти.
Crazy Rockets - это игра, в которой сочетаются обе возможности. Он предоставляет игрокам два игровых режима, позволяющих им управлять ракетами с помощью движений рук и лица. Оба режима работают безупречно, обнаруживая движения. Давайте посмотрим, как выглядят игровые эффекты на практике.
Довольно весело, не правда ли? Теперь я покажу вам, как создать такую игру, как Crazy Rockets, используя функцию распознавания лиц ML Kit.
Практика развития
Препараты
Чтобы найти подробную информацию о необходимых приготовлениях, перейдите в Процесс разработки.
Здесь мы просто рассмотрим самые важные процедуры.
1. Распознавание лиц
1.1 Настройка репозитория Maven
Перейдите в все проекты ›репозитории и настройте адрес репозитория Maven для HMS Core SDK.
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
Перейдите в buildscript ›репозитории и настройте адрес репозитория Maven для HMS Core SDK.
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
Перейдите в скрипт сборки ›зависимости и добавьте конфигурации подключаемого модуля AppGallery Connect.
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
1.2 Интегрируйте SDK
Implementation 'com.huawei.hms:ml-computer-vision-face:2.0.1.300'
1.3 Создание анализатора лиц
MLFaceAnalyzer analyzer = MLAnalyzerFactory.getInstance().getFaceAnalyzer();
1.4 Создание класса обработки
public
class
FaceAnalyzerTransactor implements
MLAnalyzer.MLTransactor<MLFace> {
@Override
public
void
transactResult(MLAnalyzer.Result<MLFace> results) {
SparseArray<MLFace> items = results.getAnalyseList();
// Process detection results as required. Note that only the detection results are processed.
// Other detection-related APIs provided by ML Kit cannot be called.
}
@Override
public
void
destroy() {
// Callback method used to release resources when the detection ends.
}
}
1.5 Создайте LensEngine для захвата динамических потоков с камеры и передайте их анализатору
LensEngine lensEngine = new
LensEngine.Creator(getApplicationContext(), analyzer)
.setLensType(LensEngine.BACK_LENS)
.applyDisplayDimension(1440, 1080)
.applyFps(30.0f)
.enableAutomaticFocus(true)
.create();
1.6 Вызов метода запуска для запуска камеры и чтение потоков с камеры для обнаружения
// Implement other logic of the SurfaceView control by yourself.
SurfaceView mSurfaceView = findViewById(R.id.surface_view);
try
{
lensEngine.run(mSurfaceView.getHolder());
} catch
(IOException e) {
// Exception handling logic.
}
1.7 Ресурсы для обнаружения релизов
if
(analyzer != null) {
try
{
analyzer.stop();
} catch
(IOException e) {
// Exception handling.
}
}
if
(lensEngine != null) {
lensEngine.release();
}
2. Обнаружение ключевых точек руки
2.1 Настройка репозитория Maven
Перейдите в все проекты ›репозитории и настройте адрес репозитория Maven для HMS Core SDK.
allprojects {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
Перейдите в buildscript ›репозитории и настройте адрес репозитория Maven для HMS Core SDK.
buildscript {
repositories {
google()
jcenter()
maven {url 'https://developer.huawei.com/repo/'}
}
}
Перейдите в скрипт сборки ›зависимости и добавьте конфигурации подключаемого модуля AppGallery Connect.
dependencies {
...
classpath 'com.huawei.agconnect:agcp:1.3.1.300'
}
}
2.2 Интегрируйте SDK
// Import the base SDK.
implementation 'com.huawei.hms:ml-computer-vision-handkeypoint:2.0.4.300'
// Import the hand keypoint detection model package.
implementation 'com.huawei.hms:ml-computer-vision-handkeypoint-model:2.0.4.300'
2.3 Создание анализатора ключевых точек руки по умолчанию
MLHandKeypointAnalyzer analyzer =MLHandKeypointAnalyzerFactory.getInstance().getHandKeypointAnalyzer();
2.4 Создание класса обработки
public
class
HandKeypointTransactor implements
MLAnalyzer.MLTransactor<List<MLHandKeypoints>> {
@Override
public
void
transactResult(MLAnalyzer.Result<List<MLHandKeypoints>> results) {
SparseArray<List<MLHandKeypoints>> analyseList = results.getAnalyseList();
// Process detection results as required. Note that only the detection results are processed.
// Other detection-related APIs provided by ML Kit cannot be called.
}
@Override
public
void
destroy() {
// Callback method used to release resources when the detection ends.
}
}
2.5 Установите класс обработки
analyzer.setTransactor(new
HandKeypointTransactor());
2.6 Создание Lengengine
LensEngine lensEngine = new
LensEngine.Creator(getApplicationContext(), analyzer)
.setLensType(LensEngine.BACK_LENS)
.applyDisplayDimension(1280, 720)
.applyFps(20.0f)
.enableAutomaticFocus(true)
.create();
2.7 Вызов метода запуска для запуска камеры и чтение потоков с камеры для обнаружения
// Implement other logic of the SurfaceView control by yourself.
SurfaceView mSurfaceView = findViewById(R.id.surface_view);
try
{
lensEngine.run(mSurfaceView.getHolder());
} catch
(IOException e) {
// Exception handling logic.
}
2.8 Ресурсы для обнаружения релизов
if
(analyzer != null) {
analyzer.stop();
}
if
(lensEngine != null) {
lensEngine.release();
}
Учить больше
Для получения дополнительной информации посетите Разработчики HUAWEI.
Подробные инструкции см. В Руководстве по разработке.
Вы можете присоединиться к дискуссии разработчиков HMS Core на Reddit.
Вы можете скачать демо и образец кода с GitHub.
Для решения проблем интеграции перейдите в Stack Overflow.