package utils;
import config.path;
import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;
import java.util.Arrays;
public class cameraUtil {
/**
* 打开摄像头并且抓取
*
* @return VideoCapture
*/
public static VideoCapture open() {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);//加载openCV
System.setProperty("java.awt.headless", "false");//关闭headless模式
VideoCapture capture = new VideoCapture();
capture.set(7, 120);//设置帧率
capture.open(0, 700);//打开本机摄像头,并一直抓取
return capture;
}
/**
* 释放摄像头
* @param capture
*/
public static void close(VideoCapture capture){
capture.release();
}
/**
* 检测人脸坐标
*
* @param src
* @return faceDetections
*/
public static MatOfRect faceDetections(Mat src) {
//输出帧
Mat dtc;
//openCV自带的人脸模型数据
//人脸特征提取器
CascadeClassifier classifier = new CascadeClassifier(path.haarcascades);
//人脸坐标的集合
MatOfRect faceDetections = new MatOfRect();
dtc = grayMat(src);
classifier.detectMultiScale(dtc, faceDetections);
return faceDetections;
}
/**
* 灰度化
*
* @param src
* @return
*/
public static Mat grayMat(Mat src) {
Mat dtc = new Mat();
Imgproc.cvtColor(src, dtc, Imgproc.COLOR_BGR2GRAY);
return dtc;
}
/**
* 根据坐标绘画人脸框
*
* @param src
* @param faceDetections
* @return Mat
*/
public static Mat showFace(Mat src, MatOfRect faceDetections) {
for (Rect rect : faceDetections.toArray()) {
Imgproc.rectangle(src, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 0, 255), 2);
}
return src;
}
/**
* 画面展示
*
* @param src
* @return 按下按键ASCII码
*/
public static int show(Mat src) {
HighGui gui = new HighGui();
Core.flip(src, src, 1);//镜像翻转
gui.imshow("人脸识别", src);
return gui.waitKey(1);//返回按下按键ASCII码
}
/**
* 相关系数大于0.72则判定是同一个人
*
* @param src
* @return boolean
*/
public static boolean compareFace(Mat src, String name) {
src = grayMat(src);
Mat compare = Imgcodecs.imread(path.faceSave + name + ".jpg");
compare = grayMat(compare);
Mat hist1 = new Mat();
Mat hist2 = new Mat();
MatOfFloat ranges = new MatOfFloat(0f, 256f);
MatOfInt histSize = new MatOfInt(10000000);
Imgproc.calcHist(Arrays.asList(src), new MatOfInt(0), new Mat(), hist1, histSize, ranges);
Imgproc.calcHist(Arrays.asList(compare), new MatOfInt(0), new Mat(), hist2, histSize, ranges);
double res = Imgproc.compareHist(hist1, hist2, Imgproc.CV_COMP_CORREL);
System.out.println(res);
if (res > 0.72) {
System.out.println("是同一个人");
} else {
System.out.println("不是用一个人");
}
return Imgproc.compareHist(hist1, hist2, Imgproc.CV_COMP_CORREL) > 0.72;
}
/**
* 裁剪图片并保存
*
* @param src
* @param rect
* @return
*/
public static void imageCut(Mat src, Rect rect, String name) {
//截取图片
Mat dtc = src.submat(rect);
Size size = new Size(rect.width, rect.height);
//图片的缩放
Imgproc.resize(dtc, dtc, size);
//存放
Imgcodecs.imwrite(path.faceSave + name + ".jpg", dtc);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
【项目介绍】 基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip 基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip 基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip 【备注】 1.项目代码均经过功能验证ok,确保稳定可靠运行。欢迎下载食用体验! 2.主要针对各个计算机相关专业,包括计算机科学、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师、企业员工。 3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在项目中找到乐趣和灵感,也欢迎你的分享和反馈!
资源推荐
资源详情
资源评论
收起资源包目录
基于JavaWeb+OpenCV实现的人脸识别管理系统源码+数据库(个人毕设项目).zip (13个子文件)
FaceComparison.iml 2KB
java
utils
cameraUtil.java 4KB
DBUtil.java 962B
config
path.java 530B
web
lib
mysql-connector-j-8.0.32.jar 2.37MB
opencv-455.jar 706KB
servlet-api.jar 324KB
WEB-INF
web.xml 305B
index.jsp 2KB
opencv_java455.dll 48.9MB
static
sql
face_manage.sql 2KB
saveFace
wlop.png 3.01MB
haarcascade_frontalface_default.xml 908KB
共 13 条
- 1
资源评论
- wind___C2024-03-10资源使用价值高,内容详实,给了我很多新想法,感谢大佬分享~
- shanghun123422024-02-28发现一个宝藏资源,赶紧冲冲冲!支持大佬~
- lijian00862024-03-03资源很赞,希望多一些这类资源。
- 2301_774735202024-04-19资源内容总结地很全面,值得借鉴,对我来说很有用,解决了我的燃眉之急。
- 2201_757616172024-03-23资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
北航程序员小C
- 粉丝: 2222
- 资源: 1823
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功