说到人脸检测,首先要了解Haar特征分类器。Haar特征分类器说白了就是一个个的xml文件,不同的xml里面描述人体各个部位的特征值,比如人脸、眼睛等等。OpenCV3.2.0中提供了如下特征文件:

haarcascade_eye.xml

haarcascade_eye_tree_eyeglasses.xml

haarcascade_frontalcatface.xml

haarcascade_frontalcatface_extended.xml

haarcascade_frontalface_alt.xml

haarcascade_frontalface_alt_tree.xml

haarcascade_frontalface_alt2.xml

haarcascade_frontalface_default.xml

haarcascade_fullbody.xml

haarcascade_lefteye_2splits.xml

haarcascade_licence_plate_rus_16stages.xml

haarcascade_lowerbody.xml

haarcascade_profileface.xml

haarcascade_righteye_2splits.xml

haarcascade_russian_plate_number.xml

haarcascade_smile.xml

haarcascade_upperbody.xml

通过加载不同的特征文件,就能达到相应的检测效果。

OpenCV3.2.0中detectMultiScale函数参数说明:

detectMultiScale(Mat image, MatOfRect objects, double scaleFactor, int minNeighbors, int flags, Size minSize, Size maxSize)

image:待检测图片,一般为灰度图(提高效率)

objects:被检测物体的矩形框向量组

scaleFactor:前后两次相继的扫描中,搜索窗口的比例系数。默认为1.1即每次搜索窗口依次扩大10%

minNeighbors:构成检测目标的相邻矩形的最小个数(默认为3个)

flags:要么使用默认值,要么使用CV_HAAR_DO_CANNY_PRUNING,如果设置为CV_HAAR_DO_CANNY_PRUNING,那么函数将会使用Canny边缘检测来排除边缘过多或过少的区域,因此这些区域通常不会是人脸所在区域

minSize:得到的目标区域的最小范围

maxSize:得到的目标区域的最大范围

人脸检测示例代码:

import org.opencv.core.Core;

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.imgcodecs.Imgcodecs;

import org.opencv.imgproc.Imgproc;

import org.opencv.objdetect.CascadeClassifier;

public class FaceDetect

{

public static void main(String[] args)

{

// TODO Auto-generated method stub

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

System.out.println("\nRunning FaceDetector");

CascadeClassifier faceDetector = new CascadeClassifier();

faceDetector.load(

"C:\\Program Files\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");

Mat image = Imgcodecs.imread("F:\\1114.jpg");

MatOfRect faceDetections = new MatOfRect();

faceDetector.detectMultiScale(image, faceDetections);

System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));

for (Rect rect : faceDetections.toArray())

{

Imgproc.rectangle(image, new Point(rect.x, rect.y),

new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));

}

String filename = "F:\\ouput.jpg";

Imgcodecs.imwrite(filename, image);

}

}

源图像与结果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java 人脸检测_Java+opencv3.2.0实现人脸检测功能相关推荐

  1. java opencv3轮廓_Java+opencv3.2.0实现轮廓检测

    Java+opencv3.2.0实现轮廓检测 发布时间:2020-08-28 13:27:52 来源:脚本之家 阅读:96 作者:帅气的猫爪 轮廓是由一系列的点组成的集合,表现在图像中就是一条曲线. ...

  2. java 腐蚀 膨胀_Java+opencv3.2.0之膨胀与腐蚀

    腐蚀与膨胀是最基本的形态学操作,它们能够实现多种多样的功能,主要如下: 1) 消除噪声 2) 分割出独立的图像元素,在图像中连接相邻的元素 3) 寻找图像中的明显的极大值区域或极小值区域 4) 求出图 ...

  3. java百度实时人脸检测_Java对接百度智能云人脸识别

    --------------------->这篇文章就是自己做个笔记<-------------------- ----- 看到SDK其实就不需要看我这篇文章了,哈哈哈 ok,先找到人脸识 ...

  4. python视频行人检测_python+opencv3.4.0 实现HOG+SVM行人检测的示例代码

    参照opencv官网例程写了一个基于python的行人检测程序,实现了和自带检测器基本一致的检测效果. opencv版本:3.4.0 训练集和opencv官方用了同一个,可以从http://pasca ...

  5. java opencv surf_在OpenCV3.1.0中使用SIFT,SURF算法

    写在前边: 1.我使用的是python2.7 + OpenCV3.1.0 2.OpenCV3.0.0+的文档有很大问题,很多文档写的还是OpenCV2.0+, OpenCV3.0+根本用不了,其中有一 ...

  6. java秒表计时器_Java实现的计时器【秒表】功能示例

    本文实例讲述了Java实现的计时器[秒表]功能.分享给大家供大家参考,具体如下: 应用名称:Java计时器 用到的知识:Java GUI编程 开发环境:win8+eclipse+jdk1.8 功能说明 ...

  7. 虹软java接摄像头_java基于虹软sdk实现人脸识别(demo)

    开发环境准备: 开发使用到的软件和工具: Jdk8. mysql 5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).libarcso ...

  8. 虹软java接摄像头_Java使用虹软SDK做人脸识别之十分简单的入门

    操作系统:Windows10 64位 编程语言:Java 使用spring boot 开发工具:IDEA 一.下载虹软SDK 进入虹软官网 https://ai.arcsoft.com.cn/ 右上角 ...

  9. java opencv人脸识别_java+opencv+intellij idea实现人脸识别

    首先当然是需要安装opencv了,我用的是opencv2.4.13.下载完之后就可以直接安装了,安装过程也很简单,直接下一步下一步就好,我就不上图了. 接下来在opencv下找到jar包,比如我直接安 ...

最新文章

  1. apk里面的图片不显示是加密了吗_【App】智能电视机视频盒子软件,你们缺吗?...
  2. 戴尔5598安装系统流程
  3. JavaSE(二十三)——JVM
  4. CNN-3: VGGNet 卷积神经网络模型
  5. pip 设置超时时间_Python pip使用超时问题解决方案
  6. delphi dll是否可用var参数_时间序列之向量自回归(VAR)学习重点
  7. 图论算法 —— 图论概述
  8. 手机充电全部用完充好还是有空就充好?
  9. 用R读取Excel的新方法
  10. 贝塞尔曲线的css实现——淘宝加入购物车基础动画
  11. 【转载】jQuery框架
  12. java MDC_Java MDC.get方法代碼示例
  13. cefsharp winform 页面里的单击事件不触发_事件详解C 键盘事件及事件流
  14. 修改jar包中的配置文件
  15. 【深度学习模型】了解一下Faster RCNN
  16. 用Python快速采集ins视频
  17. python裁剪图片边缘模糊_用cv2模糊部分图像后的锐利边缘
  18. 分布式与集群的区别是什么
  19. 【前端+后端】前后端分离之——前后端axios通信
  20. Java 领域从传统行业向互联网转型你必须知道的事儿

热门文章

  1. 我创办了一个知识星球
  2. 对PHP 三元运算、empty、isset用法的理解
  3. 宝塔Linux tomcat启动不了
  4. win10 专业版 设置PIN 后还显示添加
  5. ESP8266固件SDK开发之微信配网(AIRKISS)原理(一)
  6. 5.25 使用半调图案命令制作影印效果 [Illustrator CC教程]
  7. 莱姆病的传播媒介生物-肩突硬蜱(Ixodes scapularis)基因组测序
  8. 雷神911K笔记本安装Win7系统
  9. Android属性动画完全解析(上),初识属性动画的基本用法
  10. 我不知道是安稳的背后隐藏着沮丧