最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java+OpenCV實現(xiàn)人臉檢測并自動拍照

 更新時間:2019年07月23日 11:31:03   作者:大數(shù)據(jù)菜鳥001  
這篇文章主要為大家詳細介紹了Java+OpenCV實現(xiàn)人臉檢測,并調(diào)用筆記本攝像頭實時抓拍,具有一定的參考價值,感興趣的小伙伴們可以參考一下

java+opencv實現(xiàn)人臉檢測,調(diào)用筆記本攝像頭實時抓拍,人臉會用紅色邊框標識出來,并且將抓拍的目錄存放在src下,圖片名稱是時間戳。

環(huán)境配置:win7 64位,jdk1.8

CameraBasic.java

package com.njupt.zhb.test;

import java.awt.EventQueue;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

import org.opencv.core.*;
import org.opencv.highgui.Highgui;
import org.opencv.highgui.VideoCapture;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
/**
 * 動態(tài)人臉檢測并裁剪
 * @author hyj
 *
 */
public class CameraBasic {
 static {
  System.out.println(System.getProperty("java.library.path")); 
  System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
 }
 private JFrame frame;
 private static JLabel label;
 private static int flag = 0;

 public static void main(String[] args) {
  EventQueue.invokeLater(new Runnable() {
   @Override
   public void run() {
    try {
     CameraBasic window = new CameraBasic();
     window.frame.setVisible(true);
    } catch (Exception e) {
     e.printStackTrace();
    }
   }
  });

  VideoCapture camera = new VideoCapture();//創(chuàng)建Opencv中的視頻捕捉對象
  camera.open(0);//open函數(shù)中的0代表當前計算機中索引為0的攝像頭,如果你的計算機有多個攝像頭,那么一次1,2,3……
  if (!camera.isOpened()) {//isOpened函數(shù)用來判斷攝像頭調(diào)用是否成功
   System.out.println("Camera Error");//如果攝像頭調(diào)用失敗,輸出錯誤信息
  } else {
   Mat frame = new Mat();//創(chuàng)建一個輸出幀
   while (flag == 0) {
    camera.read(frame);//read方法讀取攝像頭的當前幀
//    CascadeClassifier faceDetector = new CascadeClassifier("src/com/njupt/zhb/test/lbpcascade_frontalface.xml");
    CascadeClassifier faceDetector = new CascadeClassifier("src/com/njupt/zhb/test/haarcascade_frontalface_alt.xml");
    MatOfRect faceDetections = new MatOfRect();
    faceDetector.detectMultiScale(frame, faceDetections);
    Rect [] rectArray = faceDetections.toArray();
    if (rectArray.length > 0) {
     
     for (int i=0;i<rectArray.length;i++) {
      Rect rect = rectArray[i];
      Rect rectCrop = new Rect(rect.x, rect.y, rect.width, rect.height);
      if (rect.width + rect.height > rectCrop.height + rectCrop.width) {
       rectCrop = new Rect(rect.x, rect.y, rect.width, rect.height);
      }
       System.out.println(String.format("檢測到 %s 個人臉! ", rectArray.length));
       Mat imageRoi = new Mat(frame, rectCrop);
       String name = System.currentTimeMillis()+".png";
       Highgui.imwrite(name, imageRoi);
       
      
      Core.rectangle(frame, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 0, 255), 2);
     }
    }
    

    //轉(zhuǎn)換圖像格式并輸出
    label.setIcon(new ImageIcon(mat2BufferedImage.matToBufferedImage(frame)));

    try {
     Thread.sleep(500);//線程暫停500ms
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

    
    
    
//    if (faceCount > 0) {
//     faceSerialCount++;
//     System.out.println(faceSerialCount);
//    } else {
//     faceSerialCount = 0;
//    }
//
//    if (faceSerialCount > 6) {
//     Mat imageRoi = new Mat(frame, rectCrop);
//     Highgui.imwrite("haha.png", imageRoi);
//     faceSerialCount = 0;
//    }
   }
  }
 }

 private CameraBasic() {
  initialize();
 }

 private void initialize() {
  frame = new JFrame();
  frame.setBounds(100, 100, 1000, 600);
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().setLayout(null);
  label = new JLabel("");
  label.setBounds(0, 0, 1000, 500);
  frame.getContentPane().add(label);
 }
 
 
}

完整源碼下載地址:Java+OpenCV實現(xiàn)人臉檢測并拍照

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot中如何集成Druid

    Springboot中如何集成Druid

    Druid是Java語言中最好的數(shù)據(jù)庫連接池,Druid能夠提供強大的監(jiān)控和擴展功能,本篇主要講解一下?Springboot中如何集成?Druid?,感興趣的朋友跟隨小編一起看看吧
    2023-06-06
  • Java中tomcat memecached session 共享同步問題的解決辦法

    Java中tomcat memecached session 共享同步問題的解決辦法

    這篇文章主要介紹了Java中tomcat memecached session 共享同步問題的解決辦法的相關(guān)資料,需要的朋友可以參考下
    2015-10-10
  • Java?Mybatis?foreach嵌套foreach?List<list<Object>>問題

    Java?Mybatis?foreach嵌套foreach?List<list<Object>&

    在MyBatis的mapper.xml文件中,foreach元素常用于動態(tài)生成SQL查詢條件,此元素包括item(必選,元素別名)、index(可選,元素序號或鍵)、collection(必選,指定迭代對象)、open、separator、close(均為可選,用于定義SQL結(jié)構(gòu))
    2024-09-09
  • 使用Java增刪改查數(shù)據(jù)庫的操作方法

    使用Java增刪改查數(shù)據(jù)庫的操作方法

    這篇文章主要介紹了使用Java增刪改查數(shù)據(jù)庫的操作方法,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-12-12
  • Java實戰(zhàn)之簡單的文件管理器

    Java實戰(zhàn)之簡單的文件管理器

    這篇文章主要介紹了Java實戰(zhàn)之簡單的文件管理器,文中有非常詳細的代碼示例,對正在學習java的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Spring Native實現(xiàn)0.059s啟動一個SpringBoot項目

    Spring Native實現(xiàn)0.059s啟動一個SpringBoot項目

    Spring Native是Spring框架的一個子項目,旨在提供一種將Spring應用程序編譯為本地可執(zhí)行文件的方法,從而提高啟動時間和資源效率,本文主要介紹了Spring Native實現(xiàn)0.059s啟動一個SpringBoot項目,感興趣的可以了解一下
    2024-02-02
  • Java中break、continue、return在for循環(huán)中的使用

    Java中break、continue、return在for循環(huán)中的使用

    這篇文章主要介紹了break、continue、return在for循環(huán)中的使用,本文是小編收藏整理的,非常具有參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • 分析Netty直接內(nèi)存原理及應用

    分析Netty直接內(nèi)存原理及應用

    Netty作為一個流行的應用框架,它的強悍之處是性能強悍,可以輕松承載數(shù)萬并發(fā); 其編程模型簡單,容易上手; 這就給大家打開了一扇通向高性能的大門。高效io模型略去不說,我們今天主要來看看內(nèi)存控制這塊的強大之處
    2021-06-06
  • Java中IO流簡介_動力節(jié)點Java學院整理

    Java中IO流簡介_動力節(jié)點Java學院整理

    Java io系統(tǒng)的設計初衷,就是為了實現(xiàn)“文件、控制臺、網(wǎng)絡設備”這些io設置的通信。接下來通過本文給大家介紹Java中IO流簡介,感興趣的朋友一起看看吧
    2017-05-05
  • kettle指定jdk8的路徑啟動的實現(xiàn)

    kettle指定jdk8的路徑啟動的實現(xiàn)

    本文主要介紹了指定jdk8的路徑啟動的實現(xiàn),通過修改kettle的配置文件來指定使用jdk8版本啟動,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03

最新評論

襄樊市| 凤庆县| 中江县| 雷波县| 南康市| 彝良县| 乡宁县| 哈尔滨市| 佛坪县| 宜章县| 本溪市| 建阳市| 仙桃市| 星子县| 通江县| 恩平市| 同仁县| 德清县| 溧水县| 延吉市| 静安区| 手游| 资讯 | 永修县| 钟山县| 明星| 蓬安县| 临泉县| 双江| 武清区| 柯坪县| 黔西县| 景德镇市| 陈巴尔虎旗| 大冶市| 沅江市| 垦利县| 循化| 台东市| 三台县| 类乌齐县|