欢迎访问我的GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于《Java版人脸跟踪三部曲》系列

-《Java版人脸跟踪三部曲》系列是欣宸的又一原创,目标是通过理论加实战,与大家一同了解CamShift(连续自适应均值漂移)算法在Java领域的实际应用,整个系列由以下三篇文章组成:

  1. 极速体验:这是欣宸原创的一大特色,先动手,用最短时间和最小代价了解CamShift能做什么
  2. 开发设计:这是编码前的准备工作,包含:要做什么?需要那些知识点?逻辑和流程梳理
  3. 编码实战:在本篇咱们正式开始编码并运行验证,经历了前面的充分准备,真正开始编码的时候不但顺畅,您还会迸发有很多与欣宸不一样的想法,例如不仅检测人脸,还能带上年龄性别,却不用多次做深度学习推理,又或者,检测出多个人脸,但是只跟踪某人,甚至多人同时跟踪
  • 另外,整个《Java版人脸跟踪三部曲》系列也是《JavaCV的摄像头实战》系列的一部分,分别是《JavaCV的摄像头实战》系列的的第十五、第十六、第十七篇

本篇概览

  • 本文的目标是快速体验Java版人脸跟踪的功能,不涉及理论知识,不涉及编码,全是动手操作,由以下步骤组成:
  1. 准备本地环境
  2. 下载三个文件:java应用,动态链接库,人脸检测模型文件
  3. 运行java应用,验证效果

准备本地环境

  1. 准备一台可上网的windows系统的电脑,我这里是64位win10
  2. 一个USB摄像头,与电脑连接正常
  3. 安装JDK:1.8.0_291
  • 作为参考,我用的电脑是Surface Pro4,前置摄像头正常

下载文件

  • 一共要下载三个文件,前两个可以在CSDN下载(不需要积分),地址分别是:
  1. 打包成jar的java应用:https://download.csdn.net/download/boling_cavalry/76015782
  2. opencv在windows环境的动态链接库:https://download.csdn.net/download/boling_cavalry/75121158
  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. 追踪的逻辑是什么,一开始目标如何确定,追踪过程中,如果目标消失在镜头面前,程序如何处理,过一会儿再出现,程序会如何处理?
  • 这些就留待三部曲的第二篇讲清楚吧,算是正式编码前的设计工作,欣宸原创,不会辜负您的期待

欢迎关注博客园:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

Java版人脸跟踪三部曲之一:极速体验的更多相关文章

  1. 三分钟极速体验:Java版人脸检测

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  2. Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  3. Java版人脸检测详解下篇:编码

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  4. Java版 人脸识别SDK demo

    虹软人脸识别SDK之Java版,支持SDK 1.1+,以及当前最新版本2.0,滴滴,抓紧上车! 前言 由于业务需求,最近跟人脸识别杠上了,本以为虹软提供的SDK是那种面向开发语言的,结果是一堆dll· ...

  5. Java版 人脸识别SDK dem

    虹软人脸识别SDK之Java版,支持SDK 1.1+,以及2.0版本,滴滴,抓紧上车! 前言由于业务需求,最近跟人脸识别杠上了,本以为虹软提供的SDK是那种面向开发语言的,结果是一堆dll······ ...

  6. 三分钟:极速体验JAVA版目标检测(YOLO4)

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  7. 分布式调用链跟踪工具Jaeger?两分钟极速体验

    欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...

  8. Docker下的Spring Cloud三部曲之一:极速体验

    版权声明:欢迎转载,请注明出处,谢谢. http://blog.csdn.net/boling_cavalry/article/details/79177930   目录(?)[+]   从本章开始, ...

  9. 微信公众平台Java版极速SDK

    JEEWX-API 是第一个微信公众平台Java版极速SDK,基于 jeewx-api 开发可以立即拥有简单易用的API,让开发更加轻松自如,节省更多时间 http://www.jeewx.com/

  10. Docker下kafka学习三部曲之一:极速体验kafka

    Kafka是一种高吞吐量的分布式发布订阅消息系统,从本章开始我们先极速体验,再实战docker下搭建kafka环境,最后开发一个java web应用来体验kafka服务. 我们一起用最快的速度体验ka ...

随机推荐

  1. ChatGPT,我彻彻底底沦陷了!

    当谈到人工智能技术的时候,我们会经常听到GPT这个术语.它代表"Generative Pre-trained Transformer",是一种机器学习模型,采用了神经网络来模拟人类 ...

  2. 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)

    一.创建ASP.NET Core Web API项目(若项目已创建,则可跳过本节内容) 1.双击打开VS2022. 2.单击"创建新项目",如下图. 3.选择"ASP.N ...

  3. 【Dotnet 工具箱】跨平台图表库 LiveCharts2

    你好,这里是 Dotnet 工具箱,定期分享 Dotnet 有趣,实用的工具和组件,希望对您有用! LiveCharts2 LiveCharts2 是一个简单.灵活.交互式以及功能强大的跨平台图表库. ...

  4. 开源后台管理系统解决方案 boot-admin 简介

    介绍 boot-admin 是一款采用前后端分离架构模式的后台管理框架.系统提炼自实际项目,兼具RuoYi-Vue前端分离版和Ruoyi-Cloud微服务版功能与技术特点. boot-admin 既有 ...

  5. 【LeetCode动态规划#08】完全背包问题实战与分析(零钱兑换II)

    零钱兑换II 力扣题目链接(opens new window) 给定不同面额的硬币和一个总金额.写出函数来计算可以凑成总金额的硬币组合数.假设每一种面额的硬币有无限个. 示例 1: 输入: amoun ...

  6. Python全栈开发工程师 day57 jQuery

    二.jQuery样式操作标签样式操作<!DOCTYPE html><html lang="en"><head> <meta charset ...

  7. Linux修改远程命令端口

    Linux修改远程命令端口 执行以下命令,修改sshd服务的配置文件 vi /etc/ssh/sshd_config 找到port,默认是注释了的 22 打开注释,将22改成想要的端口号 重启服务 s ...

  8. 【Docker】镜像制作和管理

    一.Docker镜像说明 二.基于容器通过 docker commit 手动制作镜像 1.基于容器手动制作镜像步骤 1.下载官方系统镜像 2.基于官方基础镜像启动容器,并进入容器 3.在容器中进行配置 ...

  9. SQL Server 2005递归查询

    WHIT XXX(列1,列2....) AS ( SELECT 列1,列2... FROM 表WHERE ID=xxxxxx UNION ALL SELECT 列1,列2.... FROM 表 WHE ...

  10. 揭秘Karmada百倍集群规模多云基础设施体系

    摘要:本文结合Karmada社区对大规模场景的思考,揭示Karmada稳定支持100个大规模集群.管理超过50万个节点和200万个Pod背后的原理 本文分享自华为云社区<Karmada百倍集群规 ...