Подтвердить что ты не робот

Реализация фильтра лица, например, MSQRD/SnapChat

Я хочу разработать фильтры в реальном времени в качестве фильтров в реальном времени MSQRD/Snapchat, но не смог выяснить, как мне следует продолжить, если я использую структуру Augmented Reality и обнаруживаю лицо ИЛИ использую изображение ядра, чтобы определить лицо и процесс соответственно. Пожалуйста, дайте мне знать, есть ли у кого-то идея, как реализовать то же самое?

4b9b3361

Ответ 1

Я бы порекомендовал пойти с Core Image и CIDetector. https://developer.apple.com/library/ios/documentation/GraphicsImaging/Conceptual/CoreImaging/ci_detect_faces/ci_detect_faces.html Он доступен с iOS 5, и у него отличная документация.

Создание примера детектора лица:

CIContext *context = [CIContext contextWithOptions:nil];                    // 1
NSDictionary *opts = @{ CIDetectorAccuracy : CIDetectorAccuracyHigh };      // 2
CIDetector *detector = [CIDetector detectorOfType:CIDetectorTypeFace
                                          context:context
                                          options:opts];                    // 3

opts = @{ CIDetectorImageOrientation :
          [[myImage properties] valueForKey:kCGImagePropertyOrientation] }; // 4
NSArray *features = [detector featuresInImage:myImage options:opts];        // 5

Вот что делает код:

1.- Создает контекст; в этом примере - контекст для iOS. Вы можете использовать любую из функций создания контекста, описанных в разделе Обработка изображений.) У вас также есть возможность поставлять нуль вместо контекста при создании детектора.)

2.- Создает словарь опций для определения точности для детектора. Вы можете указать низкую или высокую точность. Низкая точность (CIDetectorAccuracyLow) выполняется быстро; высокая точность, показанная в этом примере, является тщательной, но медленной.

3.- Создает детектор для лиц. Единственный тип детектора, который вы можете создать, - это один для человеческих лиц.

4.- Устанавливает словарь опций для поиска лиц. Его важно, чтобы Core Image знал ориентацию изображения, поэтому детектор знает, где он может найти вертикальные лица. Большую часть времени вы будете читать ориентацию изображения из самого изображения, а затем укажите это значение в словаре параметров.

5.- Использует детектор для поиска объектов в изображении. Предоставляемое изображение должно быть объектом CIImage. Core Image возвращает массив объектов CIFeature, каждый из которых представляет собой лицо на изображении.

Вот несколько открытых проектов, которые могли бы помочь вам начать с CoreImage или других технологий как GPUImage или OpenCV

1 https://github.com/aaronabentheuer/AAFaceDetection (CIDetector - Swift)

2 https://github.com/BradLarson/GPUImage (Objective-C)

3 https://github.com/jeroentrappers/FaceDetectionPOC (Objective-C: у него устаревший код для iOS9)

4 https://github.com/kairosinc/Kairos-SDK-iOS (Objective-C)

5 https://github.com/macmade/FaceDetect (OpenCV)

Ответ 3

Я разрабатываю одно и то же приложение. Для этого я использовал библиотеку OFxfacetracker из OpenFramework. Он обеспечивает сетку, которая содержит глаза, рот, границу лица, положение носа и точки (вершины).

Вы можете использовать это.

Ответ 4

Я тестирую, используя Unity + OpenCV для единства. Теперь попробуем, как byxfacetracker делает отслеживание жестов. Фильтры могут быть сделаны с отсутствующими шейдерами gles, доступными в единстве, также есть много плагинов в хранилище активов, которые помогают в режиме реального времени, который вам нужен.