【人脸检测】OpenCV调用深度学习模型实现人脸检测-java

news/2024/12/14 20:56:01/

介绍

这个Dome是利用OpenCV加载Tensorflow训练的模型,然后返回图片中人脸的位置信息,然后再显示出来

效果,大家可以参考这里7.46 复制打开抖音,看看【写的一手烂代码的作品】人脸检测 java也能用深度学习模型,识别率还挺高… https://v.douyin.com/iU8cUxj5/ zGi:/ 07/10 x@s.eb

说明

  • 为了方便大家直接使用,我把代码封装到jar包中了,后期有时间我上传到maven仓库
  • 想要了解原理的,可以直接反编译看jar代码,其实也没有几行,很简单
  • 我写了2个列子,一个是图片,一个摄像头显示的视频,识别其实只有一行代码FaceDetection.getInstance().action(imgPath);

步骤

jar包和备用的图片

jar下载地址:https://files.yixueai.cn/jar/face-detections-0.31.jar
请添加图片描述

识别图片的代码

import com.lancode.Face;
import com.lancode.FaceDetection;
import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import java.util.List;public class Demo {public static void main(String[] args) throws Exception {// 随便找一个张带有人脸的图片String imgPath = "E:\\age_gender.jpg";// =================关键代码==============List<Face> rets = FaceDetection.getInstance().action(imgPath);// =================关键代码==============Mat frame = Imgcodecs.imread(imgPath);for (Face face : rets) {System.out.println("左上角坐标信息 = (" + face.getX() +"," + face.getY() + ")  人脸的高度 = " + face.getHeight() + " 人脸的宽度 = " + face.getWidth() + " 有多少把握是正确的" + face.getScore());// 下面是将信息在原图中画出来显示出来,实际不需要的代码Rect rect = new Rect((int)face.getX(), (int)face.getY(), (int)face.getWidth(), (int)face.getHeight());Imgproc.rectangle(frame, rect, new Scalar(0, 0, 255), 2 , 8);Imgproc.putText(frame, String.format("%.2f", face.getScore()), new Point(rect.x, rect.y-5), Imgproc.FONT_HERSHEY_COMPLEX,1.0,new Scalar(255,0,0));}// 显示画好后的图片HighGui.imshow("LanCode人脸检测演示", frame);HighGui.waitKey(0);}
}

代码效果
在这里插入图片描述

视频的代码

import com.lancode.Face;
import com.lancode.FaceDetection;
import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;
import org.opencv.videoio.VideoCapture;import java.util.List;public class CameraDisplay {public static void main(String[] args) throws Exception {// 获取FaceDetection类FaceDetection instance = FaceDetection.getInstance();// 打开默认摄像头VideoCapture camera = new VideoCapture(0);// 检查摄像头是否成功打开if (!camera.isOpened()) {System.out.println("无法打开摄像头");return;}// 创建一个窗口HighGui.namedWindow("摄像头", HighGui.WINDOW_AUTOSIZE);// 定义一个Mat对象来存储帧Mat frame = new Mat();// 循环读取摄像头帧while (true) {// 读取新一帧camera.read(frame);// ======关键代码==========List<Face> faces = instance.action(frame);// ======关键代码==========// 下面和图片是一样的for (Face face : faces) {Rect rect = new Rect((int)face.getX(), (int)face.getY(), (int)face.getWidth(), (int)face.getHeight());Imgproc.rectangle(frame, rect, new Scalar(0, 0, 255), 2 , 8);Imgproc.putText(frame, String.format("%.2f", face.getScore()), new Point(rect.x, rect.y-5), Imgproc.FONT_HERSHEY_COMPLEX,1.0,new Scalar(255,0,0));}// 如果读取帧成功,显示在窗口中if (!frame.empty()) {HighGui.imshow("摄像头", frame);} else {System.out.println("没有捕获到帧,退出...");break;}// 按 'q' 键退出循环if (org.opencv.highgui.HighGui.waitKey(1) == 'q') {break;}}// 释放摄像头资源camera.release();// 销毁所有窗口org.opencv.highgui.HighGui.destroyAllWindows();}}

http://www.ppmy.cn/news/1555110.html

相关文章

基于决策树方法的心脏病患者患病因子的可视化分析

1 概述 心脏病作为全球范围内的主要健康问题,其患病因素分析与可视化研究具有重要的公共卫生意义。心脏病的发病机制复杂,涉及遗传、环境、生活方式等多种因素。随着社会的发展和生活方式的变化,心脏病的患病率在全球范围内持续上升,特别是在发展中国家,这一趋势更加明显…

杭州乘云联合信通院发布《云计算智能化可观测性能力成熟度模型》

原文地址&#xff1a;杭州乘云联合中国信通院等单位正式发布《云计算智能化可观测性能力成熟度模型》标准 2024年12月3日&#xff0c;由全球数字经济大会组委会主办、中国信通院承办的 2024全球数字经济大会 云AI计算创新发展大会&#xff08;2024 Cloud AI Compute Ignite&…

AI 生成的一个基于springboot后端权限框架

构建一个完整的基于Spring Boot的权限管理系统是一个庞大的任务&#xff0c;涉及多个模块和复杂的业务逻辑。由于代码量较大&#xff0c;我将提供一个简化版本的框架结构&#xff0c;并详细解释每个部分的关键实现。你可以根据需要进一步扩展和完善这个系统。 项目结构 src ├…

前端(模块化)

未使用模块化 定义两个js文件simple1.js和simple2.js let a11; let a11; 两个js文件变量重名 在html测试 传统引入js文件 <script src"./simple1.js"></script> <script src"./simple2.js"></script> 浏览器报错 使用模块…

企业级日志分析系统ELK之ELK概述

ELK 概述 ELK 介绍 什么是 ELK 早期IT架构中的系统和应用的日志分散在不同的主机和文件&#xff0c;如果应用出现问题&#xff0c;开发和运维人员想排 查原因&#xff0c;就要先找到相应的主机上的日志文件再进行查找和分析&#xff0c;所以非常不方便&#xff0c;而且还涉及…

【HarmonyOS】使用AVPlayer播放音乐,导致系统其它应用音乐播放暂停 - 播放音频焦点管理

【HarmonyOS】使用AVPlayer播放音乐&#xff0c;导致系统其它应用音乐播放暂停 - 播放音频焦点管理 一、前言 在鸿蒙系统中&#xff0c;对于音乐播放分为几种场景。音乐&#xff0c;电影&#xff0c;音效&#xff0c;闹钟等。当使用AVPlayer播放音乐时&#xff0c;如果不处理…

利用Python爬虫MinC根据ID取商品详情

在电商数据分析和市场研究中&#xff0c;获取商品详情信息是至关重要的一步。本文将详细介绍如何利用Python编写爬虫程序&#xff0c;通过MinC平台的API根据商品ID获取商品详情。我们将提供完整的代码示例&#xff0c;帮助你快速上手。 一、准备工作 在开始之前&#xff0c;我…

怎么自己创建一个网站? 开发语言首选 java,使用CMS网站内容管理系统是不错的选择

怎么自己创建一个网站 推荐使用 Java CMS 网站内容管理系统&#xff0c;根据网站规划的功能模块&#xff0c;创建不同的页面风格&#xff1b; 文章目录 怎么自己创建一个网站一、规划网站1.1确定网站主题和目的1.2规划网站结构和内容 二、注册域名2.1选择域名注册商2.2 查找并…