溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別

發(fā)布時(shí)間:2020-09-07 15:10:19 來(lái)源:腳本之家 閱讀:228 作者:深色風(fēng)信子 欄目:編程語(yǔ)言

本文實(shí)例為大家分享了javaOpenCV-4.0.0 實(shí)時(shí)人臉識(shí)別,供大家參考,具體內(nèi)容如下

package com.xu.opencv;

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.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;

/** 
 * 
 * @Title: Image.java  
 * @Description: OpenCV-4.0.0 測(cè)試文件
 * @Package com.xu.test  
 * @author: xuhyacinth   
 * @date: 2019年5月7日12:13:13  
 * @version: V-1.0.0 
 * @Copyright: 2019 xuhyacinth
 *
 */
public class Image {

 static {
 //在使用OpenCV前必須加載Core.NATIVE_LIBRARY_NAME類,否則會(huì)報(bào)錯(cuò)
 System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
 }

 public static void main(String[] args) {
 videoFace();
 }

 /**
 * OpenCV-4.0.0 實(shí)時(shí)人臉識(shí)別
 * @return: void 
 * @date: 2019年5月7日12:16:55
 */
 public static void videoFace() {
 VideoCapture capture=new VideoCapture(0);
 Mat image=new Mat();
 int index=0;
 if (capture.isOpened()) {
  while(true) {
  capture.read(image);
  HighGui.imshow("實(shí)時(shí)人臉識(shí)別", getFace(image));
  index=HighGui.waitKey(1);
  if (index==27) {
   break;
  }
  }
 }
 return;
 } 

 /**
 * OpenCV-4.0.0 人臉識(shí)別
 * @date: 2019年5月7日12:16:55
 * @param image 待處理Mat圖片(視頻中的某一幀)
 * @return 處理后的圖片

 */
 public static Mat getFace(Mat image) {
 // 1 讀取OpenCV自帶的人臉識(shí)別特征XML文件
 CascadeClassifier facebook=new CascadeClassifier("E:\\OpenCV-4.0.0\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
 // 2 特征匹配類
 MatOfRect face = new MatOfRect();
 // 3 特征匹配
 facebook.detectMultiScale(image, face);
 Rect[] rects=face.toArray();
 System.out.println("匹配到 "+rects.length+" 個(gè)人臉");
 // 4 為每張識(shí)別到的人臉畫一個(gè)圈
 for (int i = 0; i < rects.length; i++) {
  Imgproc.rectangle(image,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));
  Imgproc.putText(image,"Human", new Point(rects[i].x, rects[i].y),Imgproc.FONT_HERSHEY_SCRIPT_SIMPLEX, 1.0, new Scalar(0, 255, 0),1,Imgproc.LINE_AA,false);
  //Mat dst=image.clone();
  //Imgproc.resize(image, image, new Size(300,300));
 }
 return image;
 }

}

效果圖:

Java OpenCV4.0.0實(shí)現(xiàn)實(shí)時(shí)人臉識(shí)別

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI