欢迎访问我的GitHub

https://github.com/zq2599/blog_demos

内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;

本篇概览

  • 检测照片中的人脸,用Java可以实现吗?

  • 当然可以,今天咱们用最少的时间、最简单的操作来体验这个实用的功能,当您提交一张带有人脸的照片后,会看到下图效果,所有人脸都被识别到并被框选出来了:

  • 本篇以体验为主,不涉及具体的开发,后面还会有文章介绍完整的开发过程(包括源码)

风险提前告知

  • 为了简化操作,接下来会用到docker,对应的镜像体积巨大,达到了恐怖的4.69G,建议您为自己的docker做好加速配置,可以减少下载等待时间;

  • 由于opencv体积庞大,再加上javacv的依赖库也不小,这才导致超大镜像的出现,还望您多多海涵,标题中的《三分钟极速体验》是要去掉镜像的等待时间的,您要是觉得欣宸的标题起得很无耻,我觉得您是对的...

环境信息

  • 为了简化体验过程,接下来会用到docker,推荐的环境信息如下:
  • 操作系统:Ubuntu 16.04.1 LTS 服务器版(MacBook Pro也可以,版本是11.2.3,macOS Big Sur)
  • docker:20.10.2 Community
  • 为了加快docker镜像的下载速度,建议您提前做好docker加速配置
  • 文章标题号称三分钟极速体验,没时间说太多,准备好环境就火速动手啦

部署

  • 新建名为images的目录,用于存储处理后的文件,我这里完整路径是/root/temp/202107/17/images
  • 新建名为model的目录,用于存储稍后要下载的模型文件,我这里完整路径是/root/temp/202107/17/model
  • 下载训练好的模型文件,我准备了两个下载地址,您任选一个即可,一个是csdn的(无需积分):
  1. https://download.csdn.net/download/boling_cavalry/20352221,另一个是
  2. https://raw.githubusercontent.com/zq2599/blog_download_files/master/files/haarcascade_frontalface_default.zip
  • 上述文件下载下来是个压缩包,请先解压,再将文件haarcascade_frontalface_default.xml放入model目录(model里放的必须是解压后的文件)

  • 执行以下命令,会先下载docker镜像文件再创建容器:

docker run \
--rm \
-p 18080:8080 \
-v /root/temp/202107/17/images:/app/images \
-v /root/temp/202107/17/model:/app/model \
bolingcavalry/facedetect:0.0.1
  • 部署完成,开始体验

体验

  • 浏览器访问http://localhost:18080,这里的localhost请改成docker宿主机IP(要关闭防火墙!),可以见到操作页面,如下图(欣宸的前端开发水平渣到令人发指,果然不是空穴来风):

  • 找一张有人脸的图片(我在百度图片随机找的),点击上图的选取图片按钮进行上传,至于周围检测数量那里先保持默认值32不要动

  • 点击提交按钮后,页面会显示检测结果,如下图,人脸被准确的框选出来了:

  • 再试试多人的,如下图,居然一个人脸都没有检测到:

  • 把周围检测数量的值调低些,改成4再试,如下图,这次成功了,八张人脸全部检测到:

  • 至此,Java版人脸检测的体验已经完成,一分钟概览,一分钟部署,一分钟体验,咱们足够高效(下载超大镜像的时间不能算,不敢算...)

  • 此刻您应该能感受到Java在人脸识别领域的魅力了,聪明的您当然会有很多疑问,例如:

  1. 用了啥框架?
  2. 写了啥代码?
  3. 运行环境好不好配置?只要jar依赖吗?还需要其他操作吗?
  • 这些疑问在下面这两篇文章中完全揭秘,然后您也能轻易做出集成了人脸识别的SpringBoot应用了:
  1. Java版人脸检测详解上篇:运行环境的Docker镜像(CentOS+JDK+OpenCV)
  2. Java版人脸检测详解下篇:编码
  • 顺便剧透一下:设置运行环境很麻烦,所幸欣宸已解决此问题,并成功封装为基础镜像,咱们可以专注的开发应用,对运行环境再也无需处理了

你不孤单,欣宸原创一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 数据库+中间件系列
  6. DevOps系列

欢迎关注公众号:程序员欣宸

微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...

https://github.com/zq2599/blog_demos

三分钟极速体验:Java版人脸检测的更多相关文章

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

    欢迎访问我的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. 分布式调用链跟踪工具Jaeger?两分钟极速体验

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

  5. Java版 人脸识别SDK demo

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

  6. Java版 人脸识别SDK dem

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

  7. Protocol Buffer序列化/反序列化---初体验(java版)

    今天闲遐时学习了 Protocol Buffer 在网上看到了许多资料,其中不泛精品,想要详细了解的请看文章结尾的友情链接,我这里就做加深印象,快速入门的一个完整的demo,仅此而已. 学完你可以得到 ...

  8. Jaeger的客户端采样配置(Java版)

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

  9. Jaeger开发入门(java版)

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

随机推荐

  1. vue 引用省市区三级联动(element-ui select)

    npm 下载 axios npm install --save axios static 静态文件夹里 创建 json 文件夹 json 文件夹里创建 map.json map.json 文件里写 ( ...

  2. Http协议 压缩

    先说结论:Request和Response可以设置gzip压缩从而节省流量/带宽,这是一个不常见的问题.具体可见连接:HTTP 协议之压缩 最近测试代理服务器时,意外的发现使用urlopen请求百度首 ...

  3. Linux串口调试详解

    测试平台 宿主机平台:Ubuntu 16.04.6 目标机:iMX6ULL 目标机内核:Linux 4.1.15 目标机添加串口设备 一般嵌入式主板的默认镜像可能只配置了调试串口,并用于 consol ...

  4. Linux常用命令 - tail命令详解

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 实时刷 ...

  5. SQL-INSERT触发器练习

    &练习一 有这样的一个基础表A,字段包括:id.type.value.create_time,主要是记录某个类型的状态变化时间和值.在插入类型(type)为'runtime' 的数据时,根据前 ...

  6. 分组概念&贪婪与懒惰

    分组概念&贪婪与懒惰 1.分组 2.贪婪和懒惰 3.懒惰 4.处理选项 5.实例:百度搜索结果页面源码中获取当前页的10个标题 5.1页面源码分析规律 5.2正则表达式,匹配出10个标题 这是 ...

  7. 处理burp log 小脚本

    burp 日志保存 保存的日志格式为 将日志中的数据包 每个数据包保存到一个单独的txt里面 然后可以控制目录放进不同的目录中 #coding=utf-8 import re import os de ...

  8. 从 1 开始学 JVM 系列 | JVM 类加载器(一)

    从 1 开始学 JVM 系列 类加载器,对于很多人来说并不陌生.我自己第一次听到这个概念时觉得有点"高大上",觉得只有深入 JDK 源码才会触碰到 ClassLoader,平时都是 ...

  9. springboot 事务创建流程源码分析

    springboot 事务创建流程源码分析 目录 springboot 事务创建流程源码分析 1. 自动加载配置 2. InfrastructureAdvisorAutoProxyCreator类 3 ...

  10. Django学习day04随堂笔记

    每日测验 """ 今日考题 1.列举你知道的orm数据的增删改查方法 2.表关系如何判定,django orm中如何建立表关系,有什么特点和注意事项 3.请画出完整的dj ...