视频人脸识别系列

第一篇 使用openCV进行视频人脸识别
第二篇 使用虹软SDK进行视频人脸识别
第三篇 使用虹软SDK进行视频人脸比对


文章目录

  • 视频人脸识别系列
  • 前言
  • 一、环境搭建
    • 开发环境
      • 配置环境变量
      • 设置 maven 阿里源
      • IDEA 配置 JDK 和 MAVEN
      • 创建maven项目
  • 二、使用openCV进行视频人脸识别
    • 1.引入 JavaCV 开源库
    • 2.引入官方训练的人脸识别库
    • 3.读取摄像头进行人脸识别框选
  • 总结

前言

后期可能要做视频人脸识别项目,先学习下人脸识别相关的库的基本用法,简单熟悉下使用人脸开源库。


一、环境搭建

开发环境

  • javaJdk 11
  • Apache Maven 3.8.4
  • opencv-4.5.5
  • IDEA 2021.3 CE 社区版

下载 java JDK 11、Apache Maven 3.8.4、opencv-4.5.5 到D:\software\目录。

配置环境变量

JAVA_HOME=D:\software\Java\jdk-11.0.6
MAVEN_HOME=D:\software\apache-maven-3.8.4
PATH=.;%JAVA_HOME%\bin;%MAVEN_HOME%\bin;

设置 maven 阿里源

https://developer.aliyun.com/mvn/guide

打开 D:\software\apache-maven-3.8.4\conf\settings.xml 文件 将阿里源添加进 mirrors 中

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd"><mirrors><!-- 将阿里源添加到这里 --><mirror><id>aliyunmaven</id><mirrorOf>*</mirrorOf><name>阿里云公共仓库</name><url>https://maven.aliyun.com/repository/public</url></mirror></mirrors></settings>

IDEA 配置 JDK 和 MAVEN

  • 在 IDEA 的 setting… 中搜索 maven 配置 maven 目录和设置的阿里源配置文件
  • 选择 Maven 下的 Importing 指定 jdk

创建maven项目

  • 启动IDEA ,创建 Maven 项目, 勾选"create from archetype" 选择一个快速启动模板(maven-archetype-quickstart);

  • 填写项目名称 和 包名称
  • 选择安装的 maven 和 配置的setting.xml

    Finish 项目创建完成,找到 main方法运行下看到输出 Hello world 说明环境已经成功。

二、使用openCV进行视频人脸识别

1.引入 JavaCV 开源库

javaCV 是一款包装了常用音视频领域库(OpenCV、FFmpeg、libdc1394、FlyCapture等)和实用程序类的java库,采用javaCPP开源库(JNI技术的实现所以支持所有java实现如android)在java中高效访问本地c++的方法。简单的说就是javaCV实现了在java中调用优秀音视频开源库(多为c/c++开发)的桥梁。
https://github.com/bytedeco/javacv

在 pom.xml 中 dependencies 节点 添加 javacv 并安装

<dependencies>
<dependency><groupId>org.bytedeco</groupId><artifactId>javacv-platform</artifactId><version>1.5.7</version><type>pom</type></dependency>
<dependencies>

2.引入官方训练的人脸识别库

D:\software\opencv-4.5.5\data\haarcascades\haarcascade_frontalface_alt2.xml
在项目根目录下创建 libs 目录 将 opencv目录下的 haarcascade_frontalface_alt2.xml 文件复制到 libs 下。

3.读取摄像头进行人脸识别框选

package com.sxfenglei;
import org.bytedeco.javacv.*;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.*;
import org.bytedeco.opencv.opencv_core.Rect;
import org.bytedeco.opencv.opencv_objdetect.CascadeClassifier;
import org.opencv.imgproc.Imgproc;
import javax.swing.*;
public class AppDemo {public static void main(String[] args) {OpenCVFrameGrabber grabber = null; //帧抓取器try{//抓取摄像头grabber = new OpenCVFrameGrabber(0);// grabber.setFrameRate(24);grabber.setImageWidth(960);grabber.setImageHeight(540);grabber.start();System.out.println("尝试启动grabber抓取本地摄像头");//新建窗口显示视频画面CanvasFrame canvasFrame = new CanvasFrame("摄像头");canvasFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);canvasFrame.setAlwaysOnTop(true);//转换OpenCVFrameConverter.ToMat converterToMat = new OpenCVFrameConverter.ToMat();//检测器 加载opencv官方训练的人脸识别库CascadeClassifier faceCascade = new CascadeClassifier("D:\\javaworks\\faceDemo\\libs\\haarcascade_frontalface_alt2.xml");//定义人脸集合RectVector faces = new RectVector();Frame frame = null;//循环读取帧数据while (true) {if (!canvasFrame.isDisplayable()) {grabber.stop();System.out.println("退出");System.exit(2);}//                 frame = grabber.grabImage();frame = grabber.grab();Mat mat = converterToMat.convert(frame);if(mat.empty()){continue;}//当前帧进行灰度+直方均衡Mat videoMatGray = new Mat();opencv_imgproc.cvtColor(mat, videoMatGray, Imgproc.COLOR_BGRA2GRAY);opencv_imgproc.equalizeHist(videoMatGray, videoMatGray);//把所有人脸数据绘制到图片中faceCascade.detectMultiScale(videoMatGray, faces);//把所有人脸数据绘制到图片中for(int i=0;i<faces.size();i++){Rect face = faces.get(i);opencv_imgproc.rectangle(mat, face, Scalar.RED,1, 8, 0);}//图片刷新到窗口frame = converterToMat.convert(mat);canvasFrame.showImage(frame);}}catch (Exception e){System.out.println(e.getMessage());}finally {if(null != grabber){try {grabber.close();} catch (FrameGrabber.Exception e) {e.printStackTrace();}}}}
}

运行下看到人脸被实时框选了,还请好玩的。


总结

在 java 中使用 javaCV 库 和 openCV 人脸检测库 进行视频人脸实时的检测。在识别人脸的时候不是很准确,有时候不是人脸的地方也会被框选中。

使用openCV进行视频人脸识别相关推荐

  1. C++ OpenCV相片视频人脸识别统计人数

    C++ OpenCV相片视频人脸识别统计人数 如需远程调试,可加QQ905733049由专业技术人员远程协助! 运行代码如下: #include <iostream> #include&l ...

  2. 调用笔记本的摄像头实现基于opencv的视频人脸识别(中文显示和英文显示)以及 index 480 is out of bounds for axis 0 with size 480错误的解决

    @人脸识别代码和一些常见错误 基于opencv的视频人脸识别(中文显示)以及 index 480 is out of bounds for axis 0 with size 480错误的解决 参考了 ...

  3. 基于openCV的视频人脸识别——演员的诞生视频人脸识别

    1.准备训练数据 网络上下载(训练数据量大时,通过爬虫获取)目标的图片: 运用以下代码将原图中的人脸头像识别.提取.调整大小(这里是150*200),并分别保存. 运行环境:win7 64+VS201 ...

  4. 使用虹软SDK进行视频人脸识别

    视频人脸识别系列 第一篇 使用openCV进行视频人脸识别 第二篇 使用虹软SDK进行视频人脸识别 第三篇 使用虹软SDK进行视频人脸比对 文章目录 视频人脸识别系列 前言 一.环境依赖 开发环境 申 ...

  5. 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)

    基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...

  6. dlib库包的介绍与使用,opencv+dlib检测人脸框、opencv+dlib进行人脸68关键点检测,opencv+dlib实现人脸识别,dlib进行人脸特征聚类、dlib视频目标跟踪

    文章目录: 1 dlib库介绍 2 dlib人脸检测:绘制出人脸检测框 2.1 dlib人脸检测源码 2.2 opencv + dlib 人脸检测 2.3 dlib人脸检测总结 3 dlib人脸关键点 ...

  7. python读取视频流做人脸识别_python实现图片,视频人脸识别(opencv版)

    图片人脸识别 import cv2 filepath = "img/xingye-1.png" img = cv2.imread(filepath) # 读取图片 gray = c ...

  8. opencv联合dlib视频人脸识别例子

    本篇文章是在上一篇文章opencv联合dlib人脸识别例子 的基础上做了一个实时视频人脸识别功能. 原理是利用opencv实时提取视频中的视频流,然后进入人脸检测步骤,步骤类似上篇文章. 本篇文章中的 ...

  9. OpenCV实现视频人脸检测

    利用OpenCV实现视频人脸检测,包含眼部检测.首先,将人脸检测和眼部检测需要的模型文件haarcascade_eye.xml和haarcascade_frontalface_default.xml放 ...

最新文章

  1. 用php循环星期一到星期日,php函数获取日期范围内的所有星期一
  2. P1744 采购特价商品(SPFA求最短路径模板)
  3. Flex 3 与 Flex 4 beta 之间的区别
  4. OpenCV中膨胀和腐蚀结构元素的创建
  5. 装13失败后,我决定使用Python为生僻字批量注音
  6. 两种方法求解 正数数组中 两个数相减 的最大值
  7. Java Swing Mysql学生信息管理系统
  8. win7c盘空间越来越小_电脑一分钟小技巧:如何更改电脑桌面路径?
  9. 管理大量定时任务,如果高效触发超时?
  10. 蓝桥杯题目 计算后续日期
  11. Nachos Lab2 虚拟内存
  12. 浅谈医院HIS系统审计
  13. VISA/MasterCard/AE/DC/JCB卡号结构
  14. 2021-2027全球与中国铂金芯片温度传感器市场现状及未来发展趋势
  15. matlab if语句小于等于,matlab的if语句运算符与或怎么用
  16. Fractional Fourier Image Transformer forMultimodal Remote Sensing Data Classification
  17. 计算机视觉 — Harris角点检测
  18. wineqq解决字体问题
  19. 笔记本硬盘重装系统后只有一个盘的数据恢复方法
  20. 气不气!被迫无奈赚了500W,这程序员真的吊炸天...

热门文章

  1. 高等数学——多元函数的极值的条件
  2. 类和对象的概述及二者之间的关系
  3. 四川大学2014年数学分析考研试题
  4. 找出数组中的最大数和最小数
  5. Python3网络爬虫requests库保存登录cookies无法显示登录后的结果
  6. Linux--进程(一篇博客让你理解操作系统的底层)
  7. Tomcat详细配置(全)
  8. hasnext() java_java中Scanner的hasNext()的疑问
  9. java中scanner关于hasnext等的问题
  10. 【调剂】上海理工大学软件工程接收调剂研究生