基于Java简单的人脸和人眼识别程序

使用这个程序之前必须先安装配置OpenCV详细教程见:https://www.cnblogs.com/prodigal-son/p/12768948.html

注意:
D:/1-NCVT/1.2/1.JavaProgramming/OpenCV/opencv/*前面这部分地址是看你存放的位置决定的*/sources/data/haarcascades/haarcascade_frontalface_alt.xml/*后面的地址不变固定在这个地方*/
package faceDistinguish2;

import java.util.List;

import org.opencv.core.Core;

import org.opencv.core.CvType;

import org.opencv.core.Mat;

import org.opencv.core.MatOfRect;

import org.opencv.core.Point;

import org.opencv.core.Rect;

import org.opencv.core.Scalar;

import org.opencv.highgui.HighGui;

import org.opencv.imgproc.Imgproc;

import org.opencv.objdetect.CascadeClassifier;

import org.opencv.videoio.VideoCapture;

 /**
* 基于openc的人脸识别
* @author Ocean
*
*/
public class FaceID { /**
* OpenCV人脸识别
* @param rgb
* @param gray
*/
public static void faceRecognition(Mat rgb, Mat gray) { // 读取OpenCV的人脸特征识别文件
CascadeClassifier cascade = new CascadeClassifier("D:/1-NCVT/1.2/1.JavaProgramming/OpenCV/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml");
//在路径上没有找到相关文件返回1
if (cascade.empty()) {
System.out.println("人脸识别文件读取失败");
//return;
} MatOfRect rect = new MatOfRect();
//检测人脸
cascade.detectMultiScale(gray, rect);
// 为每张识别到的人脸画一个圈
for (Rect re : rect.toArray()) { Imgproc.rectangle(rgb, new Point(re.x, re.y), new Point(re.x+ re.width, re.y + re.height), new Scalar(0, 0, 255)); }
//图形界面显示
HighGui.imshow("人脸识别", rgb); }
/**
* OpenCV人眼识别
* @param rgb
* @param gray
*/
public static void eyeRecognition(Mat rgb, Mat gray) { // 读取OpenCV的人眼特征识别文件
CascadeClassifier cascade = new CascadeClassifier("D:/1-NCVT/1.2/1.JavaProgramming/OpenCV/opencv/sources/data/haarcascades/haarcascade_eye_tree_eyeglasses.xml");
if (cascade.empty()) {
System.out.println("人眼识别文件读取失败");
return;
} MatOfRect rect = new MatOfRect(); cascade.detectMultiScale(gray, rect); for (Rect re : rect.toArray()) {
Imgproc.rectangle(rgb, new Point(re.x, re.y), new Point(re.x+ re.width, re.y + re.height), new Scalar(255, 0, 0)); } // HighGui.imshow("人脸识别", rgb); } public static void main(String[] args) {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
// 实例化相机
VideoCapture videoCapture = new VideoCapture();
// 如果要从摄像头获取视频 则要在 VideoCapture 的构造方法写 0
if (!videoCapture.open(0)) { System.out.println("相机打开失败");
return; }
while (true) {
Mat img = new Mat(); if (!videoCapture.read(img)) { return; }
Mat rgb = new Mat();
// 灰度化
Imgproc.cvtColor(img, rgb, Imgproc.COLOR_BGR2RGB); Mat gray = new Mat(); Imgproc.cvtColor(rgb, gray, Imgproc.COLOR_RGB2GRAY);
faceRecognition(img, gray);
eyeRecognition(img, gray);
HighGui.waitKey(10); } } }

程序效果



如果在运行完成关闭图形窗口后再次运行出现下面这种错误是因为程序还没有结束



解决办法是点击下面这个除去启动



再点击终止就解决这个问题了



以后关闭图形界面后就点击终止按钮或者直接点击终止按钮就可以终止程序了

java基于OpenCV的人脸识别的更多相关文章

  1. 基于 OpenCV 的人脸识别

    基于 OpenCV 的人脸识别 一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenC ...

  2. 【计算机视觉】基于OpenCV的人脸识别

    一点背景知识 OpenCV 是一个开源的计算机视觉和机器学习库.它包含成千上万优化过的算法,为各种计算机视觉应用提供了一个通用工具包.根据这个项目的关于页面,OpenCV 已被广泛运用在各种项目上,从 ...

  3. 利用Java调用OpenCV进行人脸识别

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt409 今天我准备学习如何用Java来进行人脸检测.人脸检测有助于在任何数字图 ...

  4. 基于OpenCV的人脸识别[iOS开发笔记(2)]

    开始了OpenCV的试水工作了... 1.Get ready 在OpenCV中我们会使用函数cv::CascadeClassifier 来进行人脸检测.但是在使用本函数之前我们需要添加一个XML文件对 ...

  5. python基于OpenCV的人脸识别系统

    想获得所有的代码,请下载(来自我的CSDN): https://download.csdn.net/download/qq_40875849/11292912 主函数: from recognitio ...

  6. 基于opencv的人脸识别程序

    1. 解析opencv自带人脸识别源码(……/opencv-3.1.0/samples/cpp/facedetect.cpp) @ 操作系统:Ubuntu 15.04 OpenCV版本:3.1.0 # ...

  7. 转:基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴等)【模式识别中的翘楚】

    文章来自于:http://blog.renren.com/share/246648717/8171467499 基于开源项目OpenCV的人脸识别Demo版整理(不仅可以识别人脸,还可以识别眼睛鼻子嘴 ...

  8. Java基于opencv实现图像数字识别(五)—投影法分割字符

    Java基于opencv实现图像数字识别(五)-投影法分割字符 水平投影法 1.水平投影法就是先用一个数组统计出图像每行黑色像素点的个数(二值化的图像): 2.选出一个最优的阀值,根据比这个阀值大或小 ...

  9. Java基于opencv实现图像数字识别(四)—图像降噪

    Java基于opencv实现图像数字识别(四)-图像降噪 我们每一步的工作都是基于前一步的,我们先把我们前面的几个函数封装成一个工具类,以后我们所有的函数都基于这个工具类 这个工具类呢,就一个成员变量 ...

随机推荐

  1. 如何查看网页的header

    1.例如打开要爬取的网页:https://www.zhihu.com/explore 2.按下F12,点击Network 3.刷新页面,点击explore 4.选取request headers,us ...

  2. html5 css写出一个实心三角形和空心三角行

    原理:css中的border属性的特殊性. 实心三角形: html5: <div id="mydiv"></div> css: #mydiv{ height ...

  3. springboot项目下的Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):

    今天遇到mybatis-puls的报错Caused by: org.apache.ibatis.binding.BindingException: Invalid bound statement (n ...

  4. 1014 Waiting in Line (30 分)

    Suppose a bank has N windows open for service. There is a yellow line in front of the windows which ...

  5. Haystack+ES解决搜索服务

    最近项目组需要对老的搜索项目进行迁移和改造,刚入职2个星期的我光荣的接受了这份工作,这也是我第一次接触Haystack和Elasticsearch,以下是记录下工作中的一些需求解决,具体haystac ...

  6. 痞子衡嵌入式:走进二维码(QR Code)的世界(1)- 引言

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是走进二维码(QR Code)的世界专题的引言. 如今二维码可以说是深入走进大家的生活了,推送名片.扫码支付都离不开它,大家几乎每天都会和 ...

  7. 电商平台--Mysql主从搭建(2)

    Master上授权从库: ```grant replication slave on *.* to slave1@ip identified by 'password';``` 基于数据库hotcop ...

  8. 01-启动jmeter目录功能

    1.bin :存储了jmeter的可执行程序,如启动脚本.配置程序 docs:    api扩展文档存放 lib:   lib\ext   存储了jmeter的整合的功能(如.jar文件程序,和第三方 ...

  9. 006-循环结构(下)-C语言笔记

    006-循环结构(下)-C语言笔记 学习目标 1.[掌握]do-while循环结构 2.[掌握]for循环结构 3.[掌握]嵌套循环 一.do-while循环结构 do-while语法:   1 2 ...

  10. 怎么高效学习python?其实只需要这个方法,快速掌握不叫事儿

    很多人想学python,并且希望能快速高效的学习python,但一直都没有找到合适的方法,下面谈一下我的方法. 首先,高效入门python 怎么高效学习python?想要高效,就要先搞清楚你这个阶段, ...