Часть 1 трилогии по отслеживанию лиц Java Edition: самый быстрый опыт

Привыкайте писать вместе! Это 11-й день моего участия в «Новом ежедневном плане Nuggets · Апрельское задание по обновлению», нажмите, чтобы просмотреть подробности мероприятия .

Добро пожаловать в мой GitHub

Все оригинальные работы Xinchen (включая вспомогательный исходный код) классифицированы и обобщены здесь: github.com/zq2599/blog…

О трилогии Java Edition Face Tracking Trilogy

- Серия "Java Edition Face Tracking Trilogy" является еще одним оригинальным творением Xinchen. Цель состоит в том, чтобы понять практическое применение алгоритма CamShift (Continuous Adaptive Mean Shift) в области Java с помощью теории и практики. Вся серия состоит из Следующие три статьи состоят из:

  1. Чрезвычайно быстрый опыт: это главная особенность оригинальной работы Xinchen.Начните сначала и поймите, что CamShift может сделать в кратчайшие сроки и с наименьшими затратами.
  2. Разработка и дизайн: это подготовительная работа перед кодированием, в том числе: что делать? Нужны эти очки знаний? Логическая и процессная сортировка
  3. Практика кодирования: в этой статье мы официально начинаем кодирование и запускаем проверку.После полной подготовки, описанной выше, не только все будет гладко, когда вы действительно начнете кодирование, но у вас также появится много идей, которые отличаются от Xinchen, например, не только обнаружение лиц, но также может отображать возраст и пол, но не нужно несколько раз делать вывод о глубоком обучении или обнаруживать несколько лиц, а отслеживать только одного человека или даже нескольких людей одновременно.
  • Кроме того, вся серия «Java Edition Face Tracking Trilogy» также является частью серии «JavaCV Camera Actual Combat», которая представляет собой пятнадцатую, шестнадцатую и семнадцатую главы серии «JavaCV Camera Actual Combat».

Обзор этой статьи

  • Цель этой статьи — быстро освоить функцию отслеживания лиц в Java. Она не требует теоретических знаний, не требует кодирования и представляет собой практическую работу. Она состоит из следующих шагов:
  1. Подготовьте местную среду
  2. Загрузите три файла: Java-приложение, динамическую библиотеку, файл модели распознавания лиц.
  3. Запустите приложение Java, чтобы проверить эффект

Подготовьте местную среду

  1. Подготовьте компьютер с подключенной к Интернету системой Windows, здесь у меня 64-битная вин10
  2. USB-камера, обычно подключенная к компьютеру
  3. Установите JDK: 1.8.0_291
  • Для справки, компьютер, который я использую, — это Surface Pro4, и передняя камера в порядке.

загрузить файл

  • Всего нужно загрузить три файла, первые два можно загрузить с CSDN (кредиты не требуются), а адреса следующие:
  1. 打包成jar的java应用:download.csdn.net/download/bo…
  2. opencv在windows环境的动态链接库:download.csdn.net/download/bo…
  • 还有一个是人脸检测的模型文件,在GitHub下载,地址是:raw.github.com/opencv/open…

  • 上述三个文件下载后,完整的存放路径分别是:

  1. java应用:C:\study\javacv\simple-grab-push-1.0-SNAPSHOT.jar
  2. 动态链接库:C:\study\javacv\lib\opencv_java453.dll
  3. 模型文件:C:\study\javacv\model\haarcascade_frontalface_alt.xml

运行java应用,验证效果

  • 进入windows命令行,执行以下命令在(注意两个参数和前面下载的文件路径有关,请您根据自己情况调整):
java ^
-Djava.library.path=C:\study\javacv\lib ^
-Dmodel.file.path=C:\study\javacv\model\haarcascade_frontalface_alt.xml ^
-jar C:\study\javacv\simple-grab-push-1.0-SNAPSHOT.jar
复制代码
  • 此时,控制台会输出以下信息:
C:\Users\12167>java ^-Djava.library.path=C:\study\javacv\lib ^-Dmodel.file.path=C:\study\javacv\model\haarcascade_frontalface_alt.xml ^-jar C:\study\javacv\simple-grab-push-1.0-SNAPSHOT.jar
17:40:54.987 [main] INFO com.bolingcavalry.grabpush.camera.PreviewCameraWithCamShift - 模型文件本地路径:C:\study\javacv\model\haarcascade_frontalface_alt.xml
17:40:57.704 [main] INFO com.bolingcavalry.grabpush.extend.CamShiftDetectService - 开始加载模型文件
17:40:58.364 [main] INFO com.bolingcavalry.grabpush.extend.CamShiftDetectService - 模型文件加载完毕,初始化完成
17:40:58.364 [main] INFO com.bolingcavalry.grabpush.camera.AbstractCameraApplication - 初始化完成,耗时[2257]毫秒,帧率[30.0],图像宽度[1280],图像高度[720]
复制代码
  • 然后会弹出预览窗口,显示摄像头拍摄到的内容
  • 现在,把那个为了盒饭跑来露脸的群众演员拉到镜头面前,预览窗口中,群众演员的脸部立即出现红框,如下图所示:

вставьте сюда описание изображения

  • 让群众演员在镜头前移动,可以看到红框会紧随面部移动(截图看不出效果,实际上视频是动态跟随的):

вставьте сюда описание изображения

  • 让群众演员在摄像头面前消失,红框也随之消失
  • 让群众演员再次回到摄像头面前,红框再次出现并跟随:

вставьте сюда описание изображения

  • 至此,体验结束,《Java版人脸跟踪三部曲》的第一部就完成了,简简单单三个文件一行命令就完成人脸跟踪的效果,此刻的您一定充满各种疑惑:
  1. 为什么叫跟踪,这是什么原理?
  2. 如果把每一帧都做人脸检测,然后绘制矩形,也能实现同样效果,这两者有区别吗?
  3. 追踪的逻辑是什么,一开始目标如何确定,追踪过程中,如果目标消失在镜头面前,程序如何处理,过一会儿再出现,程序会如何处理?
  • Это осталось для уточнения второй части трилогии.Это дизайнерская работа перед официальным кодированием.Xinchen оригинален и не оправдает ваших ожиданий.

Добро пожаловать в Nuggets: программист Синь Чен

На пути обучения вы не одиноки, Xinchen Original будет сопровождать вас на всем пути...

рекомендация

отjuejin.im/post/7085239037446848543
рекомендация