本篇概览
当前很多博客实现人脸识别的大部分都是调用云厂家的接口,如百度,阿里云。这些都比较简单,会接开放平台,走接口请求基本上都掌握了。缺点就是有限制,收费。
那么我就在想,能不能不依赖第三方,自己实现人脸检测呢。接下来一起动手实战,从无到有将这个应用开发出来吧;
首先确定咱们的目标:
1.开发出java版的人脸检测应用
2.将此应用制作成docker镜像
3.在docker环境运行这个应用基于上述目标,我们可以确定以下操作步骤:
1.准备好docker基础镜像
2.开发java应用
3.将java应用打包成package文件,集成到基础镜像中,得到最终的java应用镜像
这篇文章我们主要是实现上面所述的第一个步骤:准备好docker基础镜像
关于人脸检测应用的基础镜像
如果你有过制作java应用镜像的经历,一定会产生疑问:如下图红框所示,一般不都是把OpenJDK的官方镜像作为基础镜像吗?为啥要拿一篇文章来讲基础镜像的事情?
![](https://i-blog.csdnimg.cn/blog_migrate/79d63855b6e993e99a957be2939aa233.png)
对于人脸检测的应用来说,OpenJDK的官方镜像是不够用的,因为用java实现人脸检测需要一个关键技术:javacv,在javacv运行过程中需要用到opencv的一些本地库,因此需要在运行环境中安装opencv
如下图所示,一个人脸检测应用自下而上由以下六部分构成,如果将底部的操作系统、JDK、OpenCV做成基础镜像就方便多了,咱们开发应用的时候只要需关注上面三层即可,而上面三层不就是个普通的maven工程吗?
![](https://i-blog.csdnimg.cn/blog_migrate/3710d8e61015d3c66da6adb31b16a56c.png)
写到这里,现在你应该对我们接下来要做的事情就很清楚了:编写Dockerfile文件用来制作镜像,这个镜像中要有CentOS + JDK1.8 + OpenCV
分两步走
- 先做一个CentOS + JDK的镜像
- 在这个基础上再做一个集成了OpenCV的镜像
这样在一些不需要OpenCV的场景中,还能单独使用CentOS + JDK1.8的镜像
OK,分析完成,现在开始动手吧
一、CentOS + JDK的镜像
之所以选择CentOS作