怎样使用OpenCV进行人脸识别

 我来答
huanglenzhi
推荐于2016-03-01 · 知道合伙人数码行家
huanglenzhi
知道合伙人数码行家
采纳数:117538 获赞数:517181
长期从事计算机组装,维护,网络组建及管理。对计算机硬件、操作系统安装、典型网络设备具有详细认知。

向TA提问 私信TA
展开全部

  1.环境搭建:

  整个项目的结构图:

  2.编写DetectFaceDemo.java,代码如下:

  package com.njupt.zhb.test;

  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.highgui.Highgui;

  import org.opencv.objdetect.CascadeClassifier;


  //

  // Detects faces in an image, draws boxes around them, and writes the results

  // to "faceDetection.png".

  //

  public class DetectFaceDemo {

  public void run() {

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

  System.out.println(getClass().getResource("lbpcascade_frontalface.xml").getPath());

  // Create a face detector from the cascade file in the resources

  // directory.

  //CascadeClassifier faceDetector = new CascadeClassifier(getClass().getResource("lbpcascade_frontalface.xml").getPath());

  //Mat image = Highgui.imread(getClass().getResource("lena.png").getPath());

  //注意:源程序的路径会多打印一个‘/’,因此总是出现如下错误

  /*

  * Detected 0 faces Writing faceDetection.png libpng warning: Image

  * width is zero in IHDR libpng warning: Image height is zero in IHDR

  * libpng error: Invalid IHDR data

  */

  //因此,我们将第一个字符去掉

  String xmlfilePath=getClass().getResource("lbpcascade_frontalface.xml").getPath().substring(1);

  CascadeClassifier faceDetector = new CascadeClassifier(xmlfilePath);

  Mat image = Highgui.imread(getClass().getResource("we.jpg").getPath().substring(1));

  // Detect faces in the image.

  // MatOfRect is a special container class for Rect.

  MatOfRect faceDetections = new MatOfRect();

  faceDetector.detectMultiScale(image, faceDetections);


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


  // Draw a bounding box around each face.

  for (Rect rect : faceDetections.toArray()) {

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

  }


  // Save the visualized detection.

  String filename = "faceDetection.png";

  System.out.println(String.format("Writing %s", filename));

  Highgui.imwrite(filename, image);

  }

  }


  3.编写测试类:

  package com.njupt.zhb.test;

  public class TestMain {

  public static void main(String[] args) {

  System.out.println("Hello, OpenCV");

  // Load the native library.

  System.loadLibrary("opencv_java246");

  new DetectFaceDemo().run();

  }

  }

  //运行结果:

  //Hello, OpenCV

  //

  //Running DetectFaceDemo

  ///E:/eclipse_Jee/workspace/JavaOpenCV246/bin/com/njupt/zhb/test/lbpcascade_frontalface.xml

  //Detected 8 faces

  //Writing faceDetection.png

苏州千视通视觉科技股份有限公司_
2024-11-04 广告
千视通是国内第一梯队推出多模态AI大模型网关和边缘大模型一体机产品方案的领先AI企业。 拥有行业领先的多模态视觉语言大模型技术,践行“Make high-quality AI quickly”理念,平台基于多模态预训练,支持用户自定义算法可... 点击进入详情页
本回答由苏州千视通视觉科技股份有限公司_提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式