通过OpenCV实现人脸识别,包括图片,视频,摄像头中人脸识别。

首先看一下效果(在网上随便找的一张图片):

下面开始说一下如何实现的:

第一步:  需要安装OpenCV

下载链接:https://opencv.org/    或   https://download.csdn.net/download/u012804490/10813245

第二步:创建一个Java项目

第三步:将OpenCV的jar包引入项目(截图演示)

然后  点OK。

第四步:代码实现

package com.opencv;import org.opencv.core.*;
import org.opencv.core.Point;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.WritableRaster;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;import static org.opencv.imgproc.Imgproc.CV_BILATERAL;public class FaceRecognitionDemo {public static void main(String[] args) {System.loadLibrary(Core.NATIVE_LIBRARY_NAME);// filePath可以是图片路径,也可以是视频路径String filePath ="pic1236710b.jpg";playVideo(filePath);// 调取摄像头,进行人脸识别
//      recording();}public static void playVideo(String fileName){VideoCapture capture = new VideoCapture(fileName);System.out.println(capture.get(CV_BILATERAL));if (!capture.isOpened()) {System.out.println("未能打开文件");return;}showFace(capture);}public static void recording(){VideoCapture capture = new VideoCapture(0);System.out.println(capture.get(CV_BILATERAL));if (!capture.isOpened()) {System.out.println("未能打开文件");return;}showFace(capture);}public static void showFace(VideoCapture capture){//获得视屏流帧的宽度int frame_width = (int) capture.get(3);//获得视屏流帧的高度int frame_height = (int) capture.get(4);//将视频显示类进行实例化VideoGui videoGui = new VideoGui();videoGui.createWin("视频播放",new Dimension(frame_width,frame_height));Mat mat = new Mat();String file = "haarcascade_frontalface_alt.xml";CascadeClassifier classifier = new CascadeClassifier(file);MatOfRect faceDetections = new MatOfRect();while (capture.read(mat)){classifier.detectMultiScale(mat, faceDetections);System.out.println(String.format("Detected %s faces",faceDetections.toArray().length));for (Rect rect : faceDetections.toArray()) {Imgproc.rectangle(mat, new Point(rect.x, rect.y),new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 0, 255));}BufferedImage bufferedImage = matToBufferedImage(mat);//显示视频videoGui.imgShow(bufferedImage);}// 关闭视频文件capture.release();try {Thread.sleep(5000);videoGui.imgClose();} catch (InterruptedException e) {e.printStackTrace();}}public static BufferedImage matToBufferedImage(Mat mat){try {MatOfByte matOfByte = new MatOfByte();Imgcodecs.imencode(".jpg", mat, matOfByte);byte[] byteArray = matOfByte.toArray();InputStream in = new ByteArrayInputStream(byteArray);BufferedImage bufImage = ImageIO.read(in);return bufImage;} catch (IOException e) {e.printStackTrace();}return null;}
}
package com.opencv;import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;public class VideoGui extends JComponent {private BufferedImage image;private JDialog ui = new JDialog();@Overridepublic void paintComponent(Graphics g){Graphics2D g2d = (Graphics2D) g;if(image == null){g2d.setPaint(Color.BLACK);g2d.fillRect(0,0,this.getWidth(),this.getHeight());}else{g2d.drawImage(image,0,0,this.getWidth(),this.getHeight(),null);}}public void createWin(String title,Dimension size){ui.setTitle(title);ui.getContentPane().setLayout(new BorderLayout());ui.getContentPane().add(this,BorderLayout.CENTER);ui.setSize(new Dimension(size));ui.setVisible(true);}public void imgShow(BufferedImage image){this.image = image;this.repaint();}public void imgClose(){ui.dispose();}
}

第五步:运行:

可能抛异常:Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java400 in java.library.path

解决办法: 需要配置一下   VM options:

-Djava.library.path=C:\OpenCV\opencv\build\java\x64;C:\OpenCV\opencv\build\x64\vc14\bin

再次运行,成功!

项目下载链接:  https://download.csdn.net/download/u012804490/10813371

如果对您有帮助就打个赏吧(一元以内即可)

Java使用OpenCV实现人脸识别相关推荐

  1. Java借助OpenCV实现人脸识别登录完整示例

    Java借助OpenCV实现人脸识别登录完整示例 OpenCV 效果预览 概述 下载与安装 目录说明 OpenCV的基本使用 项目集成 图片人脸检测 人脸对比相似度 识别视频中的人脸 摄像头识别人脸 ...

  2. java调起本地摄像头,利用openCV进行人脸识别(一)

    嗨咯,又好久没有更新了.今天写个前阵子做的人脸识别程序.该程序客户端基于Jave JFrame 客户端的主要作用是,调用电脑的摄像头(我的直接调用笔记本摄像头),然后回显摄像头录取的信息,再利用ope ...

  3. java利用openCV进行人脸对比(三)

    之前写过用openCV识别人脸和训练模型,这次说说用模型文件来对比人脸 首先要调起本地摄像头,然后识别一下人脸,这个人脸框出来,再调用模型文件进行人脸对比,识别成功显示用户名在人脸框框上面 这次我把这 ...

  4. Java + opencv 实现人脸识别,图片人脸识别、视频人脸识别、摄像头实时人脸识别

    搭建环境 opencv官网下载windows安装包 https://opencv.org/releases/ 选择最新版4.1.1 下载完成后是一个opencv-4.1.1-vc14_vc15.exe ...

  5. 基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  6. Python基于OpenCV的人脸识别自助商店(源码&部署视频)

    1.模块功能介绍 实现人脸识别模块.人脸登录与注册功能.商店显示和用户余额页显示功能 用GUl图形界面实现(pyqt)语言python windows下软件pycharm 1.用户登录模块:刷脸登录 ...

  7. Android之OpenCv简单人脸识别功能(Bitmap)

    Android之OpenCv简单人脸识别功能 OpenCv的下载 下载地址 - https://opencv.org/releases/ doc 文档目录 samples 示例代码 sdk 编译后的动 ...

  8. 怎样使用OpenCV进行人脸识别

    不断维护的地址:http://plzcoding.com/face-recognition-with-opencv/ 怎样使用OpenCV进行人脸识别 本文大部分来自OpenCV官网上的Face Re ...

  9. python使用opencv实现人脸识别系统

    1.首先安装过python环境,在这里就不过说    检测是否安装成功如下,在cmd中输入Python     2.安装numpy 现在开始安装numpy,打开cmd,输入pip install nu ...

最新文章

  1. oracle 存储过程 状态,查看ORACLE中正在运行的存储过程 | 学步园
  2. EDS之后的block
  3. numpy.ndarray size changed, may indicate binary incompatibil
  4. 以太坊 比特币 nounce有什么不同
  5. 基于SSM的猫头鹰物流网站
  6. java servlet的包下载_javax.servlet jar包下载_javax.servlet jar包官方下载-太平洋下载中心...
  7. Gradle下载手动安装
  8. 示波器探头的 x1x10衰减、补偿校准手法
  9. 大前端技术发展趋势刨析
  10. 如何用Java运行.jar文件
  11. Web前端html表格制作
  12. 【饭谈】【超详细】的资深测开的招聘要求,大家看看这符合了值多少钱?
  13. 如何用laragon框架运行php文件
  14. UE4,UE5虚幻引擎源码版下载
  15. 微服务网关和服务注册中心
  16. java 实习生刚入职都会做些什么工作呢?
  17. AS运行app闪退,出现keeps stopping错误
  18. 4g/GPRS DTU 开发板软件代码硬件图纸料
  19. 机器学习算法——贝叶斯分类器3(朴素贝叶斯分类器)
  20. Redis Cluster [WARNING] Node 127.0.0.1:7003 has slots in migrating state (15495).

热门文章

  1. 混沌大学签约神策数据,加快颠覆式创新教学步伐
  2. 神策数据产品演进及行业延展实践
  3. 自动化测试|录制回放效果差异检测
  4. 什么是MyCat?为什么要用到MyCat呢?
  5. Android逆向工程 初篇
  6. 论文笔记之: Deep Metric Learning via Lifted Structured Feature Embedding
  7. shell-----函数库调用
  8. exchange 2010 集线器(hub)外发邮件的配置
  9. web developer tips (70):使用命令脚本安装IIS7
  10. msf principle