使用openCV进行视频人脸识别
视频人脸识别系列
第一篇 使用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进行视频人脸识别相关推荐
- C++ OpenCV相片视频人脸识别统计人数
C++ OpenCV相片视频人脸识别统计人数 如需远程调试,可加QQ905733049由专业技术人员远程协助! 运行代码如下: #include <iostream> #include&l ...
- 调用笔记本的摄像头实现基于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错误的解决 参考了 ...
- 基于openCV的视频人脸识别——演员的诞生视频人脸识别
1.准备训练数据 网络上下载(训练数据量大时,通过爬虫获取)目标的图片: 运用以下代码将原图中的人脸头像识别.提取.调整大小(这里是150*200),并分别保存. 运行环境:win7 64+VS201 ...
- 使用虹软SDK进行视频人脸识别
视频人脸识别系列 第一篇 使用openCV进行视频人脸识别 第二篇 使用虹软SDK进行视频人脸识别 第三篇 使用虹软SDK进行视频人脸比对 文章目录 视频人脸识别系列 前言 一.环境依赖 开发环境 申 ...
- 【优秀课设】基于OpenCV的Python人脸识别、检测、框选(遍历目录下所有照片依次识别 视频随时标注)
基于OpenCV的Python人脸识别.检测.框选 (遍历目录下所有照片依次识别 视频随时标注) 移步: https://blog.csdn.net/weixin_53403301/article/d ...
- 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人脸关键点 ...
- python读取视频流做人脸识别_python实现图片,视频人脸识别(opencv版)
图片人脸识别 import cv2 filepath = "img/xingye-1.png" img = cv2.imread(filepath) # 读取图片 gray = c ...
- opencv联合dlib视频人脸识别例子
本篇文章是在上一篇文章opencv联合dlib人脸识别例子 的基础上做了一个实时视频人脸识别功能. 原理是利用opencv实时提取视频中的视频流,然后进入人脸检测步骤,步骤类似上篇文章. 本篇文章中的 ...
- OpenCV实现视频人脸检测
利用OpenCV实现视频人脸检测,包含眼部检测.首先,将人脸检测和眼部检测需要的模型文件haarcascade_eye.xml和haarcascade_frontalface_default.xml放 ...
最新文章
- 用php循环星期一到星期日,php函数获取日期范围内的所有星期一
- P1744 采购特价商品(SPFA求最短路径模板)
- Flex 3 与 Flex 4 beta 之间的区别
- OpenCV中膨胀和腐蚀结构元素的创建
- 装13失败后,我决定使用Python为生僻字批量注音
- 两种方法求解 正数数组中 两个数相减 的最大值
- Java Swing Mysql学生信息管理系统
- win7c盘空间越来越小_电脑一分钟小技巧:如何更改电脑桌面路径?
- 管理大量定时任务,如果高效触发超时?
- 蓝桥杯题目 计算后续日期
- Nachos Lab2 虚拟内存
- 浅谈医院HIS系统审计
- VISA/MasterCard/AE/DC/JCB卡号结构
- 2021-2027全球与中国铂金芯片温度传感器市场现状及未来发展趋势
- matlab if语句小于等于,matlab的if语句运算符与或怎么用
- Fractional Fourier Image Transformer forMultimodal Remote Sensing Data Classification
- 计算机视觉 — Harris角点检测
- wineqq解决字体问题
- 笔记本硬盘重装系统后只有一个盘的数据恢复方法
- 气不气!被迫无奈赚了500W,这程序员真的吊炸天...