这是最近做的一个工作,由于要调用电脑摄像头实时检测人眼主要是检测闭眼睁眼
**

1.工具

**
1.1unity(作者用的是2020.3.25 大部分版本都ok
1.2opencv for unity(可从这个链接下载链接:https://pan.baidu.com/s/1Wti9m57-pe1et4U8LNgoCA 提取码:b0un
1.3haar模型

2.实现

2.1首先新建一个项目
然后将opencv for unity导入
2.2
新建一个脚本这里命名为EyeDetect


using OpenCVForUnity;
using OpenCVForUnityExample;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class EyeDetect : MonoBehaviour
{//WebCamTextureToMatExample webcamTexToMat = new WebCamTextureToMatExample();//获取摄像头画面的辅助类//PoseEstimator poseEstimator = new PoseEstimator();string face_Xml_path;//人脸识别训练数据文件XML的路径string eye_Xml_path;//人眼识别训练数据文件XML的路径Mat gray;//灰度图MatOfRect faceRect;//识别到的人脸区域CascadeClassifier classifier;//人脸识别分类器public static int EyesChecked=0;//是否检测到眼睛void Start(){//webcamTexToMat = transform.GetComponent<WebCamTexToMat>();//获取Quad上挂载的WebCamTextureToMatExample脚本组件//poseEstimator = transform.GetComponent<PoseEstimator>();face_Xml_path = Application.streamingAssetsPath + "/haarcascade_frontalface_alt2.xml";//获取人脸识别训练数据XMLeye_Xml_path = Application.streamingAssetsPath + "/haarcascade_eye.xml";//获取人眼识别训练数据XMLgray = new Mat();//初始化MatfaceRect = new MatOfRect();//初始化识别到的人脸区域classifier = new CascadeClassifier(face_Xml_path);//初始化人脸识别分类器        }public void  EyesFace(){Imgproc.cvtColor(transform.GetComponent<PoseEstimator>().rgbaMat, gray, Imgproc.COLOR_RGBA2GRAY);       //将获取到的摄像头画面转化为灰度图并赋值给grayclassifier.detectMultiScale(gray, faceRect, 1.1d, 4, 2, new Size(20, 20), new Size());//检测到gray灰度图中的人脸/*1.1d为scaleFactor,必须大于1,值越大速度越快精度越低,反之值越小速度越慢精度越高2为minNeighbors,最少检测到两次才认为是被检测到2为flags,性能参数new Size(20, 20)为检测目标的最小尺寸,低于这个尺寸的不检测,或者不设置阈值new Size(100, 100)为检测目标的最大尺寸,高于这个尺寸的不检测,或者不设置阈值*/OpenCVForUnity.Rect[] rects = faceRect.toArray();//faceRect为被检测到物体的矩形向量组,保存x、y、w、h四个参数,rects[i].x和rects[i].y为框左上角顶点rects[i].width和rects[i].height为框的宽和高for (int i = 0; i < rects.Length; i++){Imgproc.rectangle(transform.GetComponent<PoseEstimator>().rgbaMat, new Point(rects[i].x, rects[i].y),new Point(rects[i].x + rects[i].width, rects[i].y + rects[i].height),new Scalar(0, 255, 0, 255), 2);//在原本的画面上框出人脸位置/*****************************************************************/Mat roi_gray_img = new Mat(gray, new OpenCVForUnity.Rect(0, 0, rects[i].x + rects[i].width, rects[i].y + rects[i].height));//Mat roi_img = new Mat(faceRect, new OpenCVForUnity.CoreModule.Rect(0, 0, rects[i].x + rects[i].width, rects[i].y + rects[i].height));MatOfRect eyes = new MatOfRect();CascadeClassifier eyecascade = new CascadeClassifier(eye_Xml_path);eyecascade.detectMultiScale(roi_gray_img, eyes, 1.3d, 8, 2, new Size(20, 20), new Size());//Debug.Log(eyes.elemSize());if (eyes.elemSize() > 0){//  OpenCVForUnity.Rect[] eye_rects = eyes.toArray();// for (int t = 0; t < eye_rects.Length; t++)// {//Debug.Log("detect eyes " + rects[t]);// Imgproc.rectangle(roi_img, new Point(eye_rects[t].x, eye_rects[t].y), new Point(eye_rects[t].x + eye_rects[t].width, eye_rects[t].y + eye_rects[t].height), new Scalar(255, 255, 0, 255), 2); //黄// Point center = new Point((eye_rects[t].x + eye_rects[t].x + eye_rects[t].width) / 2, (eye_rects[t].y + eye_rects[t].y + eye_rects[t].height) / 2);//Imgproc.circle(poseEstimator.rgbaMat, center, eye_rects[t].width / 2, new Scalar(255, 255, 0, 255), 2);//}// Debug.Log("已检测到人眼");EyesChecked = 1;}else{EyesChecked = 0;}}}
}

到这个路径下打开并修改UPdate

void Update(){if (hasInitDone && webCamTexture.isPlaying && webCamTexture.didUpdateThisFrame){Utils.webCamTextureToMat(webCamTexture, rgbaMat, colors);//注释掉Imgproc.putText (rgbaMat, "W:" + rgbaMat.width () + " H:" + rgbaMat.height () + " SO:" + Screen.orientation, new Point (5, rgbaMat.rows () - 10), Core.FONT_HERSHEY_SIMPLEX, 1.0, new Scalar (255, 255, 255, 255), 2, Imgproc.LINE_AA, false);//transform.GetComponent<FaceDetect>().DetectFace();//添加调用FaceDetect脚本中DetectFace画线函数的语句transform.GetComponent<EyeDetect>().EyesFace();//添加调用FaceDetect脚本中DetectFace画线函数的语句Utils.matToTexture2D(rgbaMat, texture, colors);}}

最后运行结果如图所示:

unity+opencv实时检测人脸及眼睛区域检测相关推荐

  1. C# 人脸检测 人脸比对 活体检测 口罩检测 年龄预测 性别预测 眼睛状态检测

    基于以下开源软件做了一个Demo GitHub - ViewFaceCore/ViewFaceCore: C# 超简单的离线人脸识别库.( 基于 SeetaFace6 ) 效果 代码 using Sy ...

  2. 常用的表格检测识别方法-表格区域检测方法(上)

    常用的表格检测识别方法 表格检测识别一般分为三个子任务:表格区域检测.表格结构识别和表格内容识别.本章将围绕这三个表格识别子任务,从传统方法.深度学习方法等方面,综述该领域国内国外的发展历史和最新进展 ...

  3. 常用的表格检测识别方法 - 表格区域检测方法(下)

    --书接上文 Training 半监督网络的训练分两步进行:a)对标记数据独立训练学生模块,由教师模块生成伪标签:b)结合两个模块的训练,得到最终的预测结果. 伪标签框架 实验 数据集: TableB ...

  4. 使用Python,dlib中新型、更快、更小的5点面部标志检测器检测人脸、眼睛、鼻子

    这篇博客将介绍一个新的dlib面部标志检测器--5点人脸标志模型,它比原始版本更快(提高了8-10%),效率更高,模型更小(降低了10倍). 该5点面部标志检测器被认为是最初随dlib库一起分发的68 ...

  5. python+OpenCv+dlib实现人脸68个关键点检测

    pip install dlib==19.7.0 下载地址: http://dlib.net/files/ dlib中为我们提供了关于人脸检测标注训练好的文件可在http://dlib.net/fil ...

  6. python人脸识别防小偷_基于python的人脸识别(检测人脸、眼睛、嘴巴、鼻子......)...

    本文链接:https://blog.csdn.net/James_Ray_Murphy/article/details/79209172 import numpy as np import cv2 # ...

  7. 基于matlab活体检测,人脸识别中活体检测算法综述.PDF

    人脸识别中的活体检测算法综述 SIGAI 2018.9.19 原创声明:本文为 SIGAI 原创文章,仅供个人学习使用,未经允许,不能用于商业目的. 1. 什么是活体检测? --> 判断捕捉到的 ...

  8. 使用OpenCV在Python中进行人脸和眼睛检测

    Modules Used: 使用的模块: python-opencv(cv2) python-opencv(cv2) python-opencv(cv2) Opencv(Open source com ...

  9. 基于OpenCV的摄像头人脸检测

    一.选题背景 二.设计目的和意义 三.设计方案 四.特征分类器的选择 4.1 常用人脸检测的特征分类器 4.2 人脸的Haar特征分类器介绍 4.3 人脸的Haar特征分类器使用 五.设计中主要函数介 ...

最新文章

  1. AltiumDesigner 热焊盘铺铜
  2. [Js]删除数组指定元素
  3. java将日期作为文件名_获取当前时间作为文件名
  4. 配置 docker0 网桥
  5. ubuntu 下安装memcache 以及php扩展
  6. c0000005错误怎么解决_iTunes提示3194未知错误怎么办【解决方法】
  7. 继续深入更新shell脚本容易出错的地方
  8. MySQL 示例数据库 employees 详解
  9. Spring2.5整合Ibatis入门级开发实例
  10. gd32 定时器时钟_漫谈LiteOS之开发板-Timer(基于GD32450i-EVAL)
  11. 关于EL表达式中requestScope和param区别
  12. 通过编写纯代码与JDBC实现对mysql的数据实现增删改查案例,jdbc连接数据库六步完整步骤详解,适合编程新手,通俗易懂
  13. HanLP里使用DAT存取字典的方法
  14. 问卷分析SPSS+AMOS实证步骤
  15. 冰箱android10,智能手机 篇十:手机冻冰箱总共分几步?AGM推出金嗓子手机H2,超大声音超长待机...
  16. 李宏毅2022机器学习hw5
  17. powerdesigner16 license key
  18. base64编码图片替换url图片
  19. 基于ZYNQ的光纤-以太网高速传输系统设计
  20. (前端)HTML之CSS(选择器字体排版背景)

热门文章

  1. 用matlab仿真mmc环流抑制器,一种基于准PR控制原理的MMC阀组环流抑制方法
  2. B/S程序设计 经典好书(备忘)
  3. Web全栈 第九周-曾老师-专题视频课程
  4. 上班没事做gai这么办
  5. 解析旅游商业模式---共享旅游电商:这个行业大有可为!
  6. ARP病毒终极解决方案
  7. Ubuntu入门,Ubuntu基本软件,Ubuntu起始配置
  8. 生日快乐模板php,HTML5应用-生日快乐动画之实现星星的示例代码分享
  9. 2020大二下期学期计划
  10. Transformer详解(附代码)