怎么用Java+OpenCV实现人脸检测并自动拍照
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,这篇文章主要讲解了"怎么用Java+OpenCV实现人脸检测并自动拍照",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Java+OpenCV实现人
千家信息网最后更新 2025年01月21日怎么用Java+OpenCV实现人脸检测并自动拍照
这篇文章主要讲解了"怎么用Java+OpenCV实现人脸检测并自动拍照",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"怎么用Java+OpenCV实现人脸检测并自动拍照"吧!
java+opencv实现人脸检测,调用笔记本摄像头实时抓拍,人脸会用红色边框标识出来,并且将抓拍的目录存放在src下,图片名称是时间戳。
环境配置: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;/** * 动态人脸检测并裁剪 * @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();//创建Opencv中的视频捕捉对象 camera.open(0);//open函数中的0代表当前计算机中索引为0的摄像头,如果你的计算机有多个摄像头,那么一次1,2,3…… if (!camera.isOpened()) {//isOpened函数用来判断摄像头调用是否成功 System.out.println("Camera Error");//如果摄像头调用失败,输出错误信息 } else { Mat frame = new Mat();//创建一个输出帧 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;irectCrop.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); } } //转换图像格式并输出 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实现人脸检测并自动拍照"的内容了,经过本文的学习后,相信大家对怎么用Java+OpenCV实现人脸检测并自动拍照这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
人脸
检测
摄像头
摄像
学习
输出
内容
函数
计算机
成功
个人
代表
动态
名称
图像
图片
多个
实时
对象
就是
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
高并发大数据量选择什么样数据库
短1U服务器 dell
专业服务器运维管理
华为第五届网络安全技术赛
堡垒服务器的基本参数
软件开发安全的三性
做软件开发用苹果小号笔记本
小学生网络安全的保障措施
和平精英怎么看服务器好坏
数据库表之间的多对一关系表
北京计算机软件开发平台
为什么无法与服务器安全连接
网络安全H5文案
服务器10大品牌
cnrds数据库要钱吗
涉密软件开发甲级现场审查
辽宁职业学院网络技术分数线
免流vpn 服务器
小微mysql数据库学习
app软件开发流程的步骤
企业网络安全设计方案摘要
网络安全软件指的是什么
云众广州互联网科技有限公司
剑三 网通服务器人多吗
服务器cpu模块怎么拔出来
服务器安全系统怎么查
中国国家网络安全基地
网络安全H5文案
网络安全公司合法吗
编程网络安全哪个吃香