工业生产安全-安全帽第二篇-用java语言看看opencv实现的目标检测使用过程

一.背景

      公司是非煤采矿业,核心业务是采选,大型设备多,安全风险因素多。当下政府重视安全,头部技术企业的安全解决方案先进但价格不低,作为民营企业对安全投入的成本很敏感。利用我本身所学,准备搭建公司的安全管理技术平台,从视觉、传感等多方面配合,逐步将公司的生产安全管理技术平台搭建起来。也许在不久的未来,公司各层级都看到了技术的价值,会逐步过渡到一线品牌的安全产品上来,逐步推动生产安全技术在公司的应用。

      本文是安全帽的第二篇,用java简单调用OpenCV自带的面部检测器找到面部图片区域,了解整体java调用OpenCV的过程。

      本文建立在第一篇上面,请先阅读第一篇。工业生产安全-安全帽第一篇-opencv及java开发环境搭建-CSDN博客

二.思路分析

        我之前有一些目标检测、图像算法(大学时,全专业图形学数一数二,不过和专业的比起来,是菜鸟哈!!!)的粗浅经验。这里就先说说程序执行的思路。其实,很简单,就是图片准备=》检测器准备=》执行检测器=》拿结果后处理。

       图片准备,准确说是输入准备,一般都是图片,看具体的场景嘛!有的会处理成灰度图片或者二值化,具体的就看检测器的要求。

     检测器准备,形态说就是一个文件,一般是xml文件。这个文件从哪里来呢?这个就是我们平时说的模型训练的产物。不管是大模型、小模型,简单来说就是一堆数据(图片、文字、语音、文档等)丢进去,让训练器运行,得到一个结果文件。这个训练器的核心算法就决定了产物的水平,反正我个人不相信它们有智慧,我个人认为今天的人工智能发展虽然取得了很多成绩,但是与真正的智慧还有很远。当然,这并不影响我们使用它来解决一些问题。扯远了,拉回来。简单理解,检测器就是模型训练出来的产物,可以说是一个规则集,用来判断目标是否符合规则集,符合就找到了目标。

    执行检测器,这个就是一个语句,没有啥特别说的。

    结果后处理,一般来说,图片这种结果目标检测是给你一堆像素点,你自己想改个颜色、加个框框、涂个蒙版都可以,反正表示你检测到了结果嘛!

三.上代码

package com.scantt.opencv.demos.eyes;import java.net.URL;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.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;public class FaceDetection {static {String path1 = ClassLoader.getSystemResource(Core.NATIVE_LIBRARY_NAME + ".dll").getPath();if (path1.startsWith("/")) {path1 = path1.substring(1);// windows系统有毒...jar包不认识 /开头这样的形式,如/c:/xx}System.load(path1);}public static void main(String[] args) {// 读取图像URL url = ClassLoader.getSystemResource("eyes/dongfang.jpg");String path = url.getPath();if (path.startsWith("/")) {path = path.substring(1);// windows系统有毒...jar包不认识 /开头这样的形式,如/c:/xx}Mat image = Imgcodecs.imread(path);// 转换为灰度图像Mat gray = new Mat();Imgproc.cvtColor(image, gray, Imgproc.COLOR_BGR2GRAY);// 加载面部检测器URL url2 = ClassLoader.getSystemResource("eyes/haarcascade_frontalface_default.xml");String path2 = url2.getPath();if (path2.startsWith("/")) {path2 = path2.substring(1);// windows系统有毒...jar包不认识 /开头这样的形式,如/c:/xx}CascadeClassifier faceDetector = new CascadeClassifier(path2);// 检测面部MatOfRect faceDetections = new MatOfRect();faceDetector.detectMultiScale(gray, faceDetections);// 遍历每个检测到的面部for (Rect rect : faceDetections.toArray()) {// 面部画个框
//			Imgproc.rectangle(image, rect, new Scalar(255, 0, 0), 2);// 面部画个圆Imgproc.circle(image, new Point(rect.x + rect.width / 2, rect.y + rect.height / 2), rect.width / 2,new Scalar(255, 0, 0));}// 显示结果HighGui.imshow("Eye Detection", image);HighGui.waitKey(0);}
}

图片dongfang.jpg,你随便找个包含人头像的,我是放到src/main/resources/eyes目录下的哦。

检测器文件haarcascade_frontalface_default.xml, 去OpenCV安装目录去找opencv\build\etc\haarcascades,我还是放到src/main/resources/eyes目录下的哦。

      我的检测结果是

    

四.后面干什么

      知道怎么调用检测器了,当然就是去找一个或者做一个安全帽的检测咯,先拿个别人的试试吧!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/886697.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows 服务常用工具及 nssm 使用示例

Windows 将某个应用程序设为服务运行,确保它在后台稳定运行,并且在系统重启后自动启动。 常见的工具包括 Windows 自带的服务管理器、sc 命令、srvany 和第三方工具 nssm。 1.常用 Windows 服务工具 Windows 服务管理器:通过图形化界面&am…

汽车资讯新动力:Spring Boot技术驱动

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

头歌——vlan基本配置第二关

任务描述 本关任务:根据前面的实验,完成相应的题目测试。

深度解析FastDFS:构建高效分布式文件存储的实战指南(上)

文章目录 一、FastDFS简介1.1 概述1.2 特性 二、FastDFS原理架构2.1 FastDFS角色2.2 存储策略2.3 上传过程2.4 文件同步2.5 下载过程 三、FastDFS适用场景四、同类中间件对比4.1 FastDFS和集中存储方式对比4.2 FastDFS与其他文件系统的对比 五、FastDFS部署5.1 单机部署5.1.1 使…

LeetCode 3249.统计好节点的数目:深度优先搜索(DFS)

【LetMeFly】3249.统计好节点的数目:深度优先搜索(DFS) 力扣题目链接:https://leetcode.cn/problems/count-the-number-of-good-nodes/ 现有一棵 无向 树,树中包含 n 个节点,按从 0 到 n - 1 标记。树的根节点是节点 0 。给你一…

中国省级金融发展水平指数(金融机构存款余额、贷款余额、GDP)2020-2023年

数据范围: 包含的数据内容如下: 分省份金融机构存款余额、分省份金融机构贷款余额、分省份金融机构存贷款余额、分省份GDP、分省份金融发展指数 西藏自治区、贵州省、黑龙江省2023年数据暂未公布,计算至2022年,其他省份数据无缺失…

大模型(LLMs)RAG 版面分析——表格识别方法篇

大模型(LLMs)RAG 版面分析——表格识别方法篇 一、为什么需要识别表格? 表格的尺寸、类型和样式展现出多样化的特征,如背景填充的差异性、行列合并方法的多样性以及内容文本类型的不一致性等。同时,现有的文档资料不…

力扣(leetcode)题目总结——辅助栈篇

leetcode 经典题分类 链表数组字符串哈希表二分法双指针滑动窗口递归/回溯动态规划二叉树辅助栈 本系列专栏:点击进入 leetcode题目分类 关注走一波 前言:本系列文章初衷是为了按类别整理出力扣(leetcode)最经典题目&#xff0c…

【python系列】python数据类型的分类和比较

一、数据类型的定义 在程序设计的类型系统中,数据类型(英语:Data type),又称资料型态、资料型别,是用来约束数据的解释。——Wikipedia 从定义我们可以看出来,数字类型的理解最主要的是约束数据的解释,每个类型都有他们自己所使用得场景,这个就是数字类型的分类,分类…

【JavaSE】【多线程】阻塞队列

目录 一、阻塞队列1.1 生产者消费者模型1.2 Java提供的阻塞队列1.3 实现一个简单生产者消费者模型 二、自己实现阻塞队列2.1 成员变量2.2 构造方法2.3 put方法2.4 take方法2.5 最终代码 一、阻塞队列 阻塞队列:是一种特殊的队列,也有先进先出的特性。它…

【pytest】pytest注解使用指南

前言:在 pytest 测试框架中,注解(通常称为装饰器)用于为测试函数、类或方法提供额外的信息或元数据。这些装饰器可以影响测试的执行方式、报告方式以及测试的组织结构。pytest 提供了多种内置的装饰器,以及通过插件扩展…

el-table合并单元格之后,再进行隔行换色的且覆盖表格行鼠标移入的背景色的实现

el-table 中有现成的隔行换色功能,只要增加 stripe 属性即可。但是如果有单元格合并的话,这个属性就不可用了。这时候我们就需要动点小心思了。 基于相同字段进行合并 单元格合并:基于表头中的某一列,具有相同值的个数相加进行合…

OpenAI模型whisper 音频转文本

最近有一个音频转文本的需求,了解到了OpenAI的whisper模型可以实现。 Whisper 是 OpenAI 提供的一个通用语音识别模型,支持多语言的音频转文本功能,并具有较高的准确性。它的主要用途包括自动语音识别 (ASR)、语言翻译(将音频直接…

ubuntu下连接了192.168.1.x和192.168.2.x两个网络段,如何让这个两个网段互相通信?

在 Ubuntu 上连接两个网络段(如 个人终端A 192.168.1.10 和 个人终端B 192.168.2.10),需要配置路由和网络转发功能,使这两个网段能够相互通信。以下是实现方法: 步骤 1:确认网络配置 1. 确保 Ubuntu 机器…

汽车资讯新高度:Spring Boot技术飞跃

6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…

03-axios常用的请求方法、axios错误处理

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

机器学习基础04_朴素贝叶斯分类决策树分类

目录 一、朴素贝叶斯分类理论 1、贝叶斯分类理论 2、条件概率 3、全概率公式 4、贝叶斯推断 5、朴素贝叶斯推断 6、拉普拉斯平滑系数 二、决策树分类 1、相关概念 2、基于信息增益决策树的建立 3、基于基尼指数决策树的建立 一、朴素贝叶斯分类理论 1、贝叶斯分类理…

git日志查询和导出

背景 查看git的提交记录并下载 操作 1、找到你idea代码的路径,然后 git bash here打开窗口 2、下载所有的日志记录 git log > commit.log3、下载特定日期范围内记录 git log --since"2024-09-01" --until"2024-11-18" 你的分支 > c…

后台管理系统(开箱即用)

很久没有更新博客了,给大家带上一波福利吧,大佬勿扰 现在市面上流行的后台管理模板很多,若依,芋道等,可是这些框架对我们来说可能会有点重,所以我自己从0到1写了一个后台管理模板,你们使用时候可扩展性也会更高 项目主要功能: 成员管理,部门管理&#…

Spring Boot 牛刀小试 org.springframework.boot:spring-boot-maven-plugin:找不到类错误

今天看了下书翻了下Spring Boot的用法,下载idea后, 反复出现org.springframework.boot:spring-boot-maven-plugin:找不到类错误,后来看了下调试窗口,发现是连不上maven的网站443错误,解决思路很简单,把ide连…