基于TensorFlow.js和COCO-SsD模型的实时目标检测网络应用程序

在这里插入图片描述
在这里插入图片描述

基于TensorFlow.js和COCO-SsD模型的实时目标检测网络应用程序

实现流程
  • 访问用户的桌面录屏并且显示视频源(位置居中)。
  • 对视频源进行实时目标检测。
  • 在检测到的目标周围绘制边界框,并用它们的类别和检测置信度进行标记。
  • 在视频源下方显示一个唯一检测到的目标列表,显示目标类别和首次检测到的时间。
  • 确保每个目标类别只列出一次,不管它被检测到多少次。
  • 使用2帧每秒的检测频率来平衡性能和响应性。
  • 包括屏幕录制访问和模型加载的错误处理。
  • 为应用程序设计一个干净、现代的外观,并具有响应式设计。
  • 将所有必要的HTML、CSS和JavaScriptt包含在一个单一的自包含文件中。
  • 为TensorFlow.js和COCO-SSD模型库使用CDN链接。 请提供完整可运行的HTML文件,其中包含内联CSS和JavaScript。
效果图

在这里插入图片描述

代码
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>实时目标检测</title><script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script><script src="https://cdn.jsdelivr.net/npm/@tensorflow-models/coco-ssd"></script><style>body {font-family: Arial, sans-serif;display: flex;flex-direction: column;align-items: center;background-color: #f0f0f0;margin: 0;padding: 20px;}h1 {color: #333;}#videoContainer {position: relative;margin-bottom: 20px;}#output {position: absolute;top: 0;left: 0;}#detectionsList {background-color: white;border-radius: 8px;padding: 20px;box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);max-width: 600px;width: 100%;}#detectionsList h2 {margin-top: 0;}#detectionsList ul {list-style-type: none;padding: 0;}#detectionsList li {margin-bottom: 10px;padding: 10px;background-color: #f9f9f9;border-radius: 4px;}#error {color: red;margin-top: 20px;}</style>
</head>
<body><h1>实时目标检测</h1><div id="videoContainer"><video id="video" width="640" height="480" autoplay muted></video><canvas id="output" width="640" height="480"></canvas></div><div id="detectionsList"><h2>检测到的目标</h2><ul id="detectedObjects"></ul></div><div id="error"></div><script>const video = document.getElementById('video');const output = document.getElementById('output');const ctx = output.getContext('2d');const detectedObjects = document.getElementById('detectedObjects');const errorDiv = document.getElementById('error');let model;let detections = new Map();async function setupCamera() {try {const stream = await navigator.mediaDevices.getDisplayMedia({ video: true });video.srcObject = stream;return new Promise((resolve) => {video.onloadedmetadata = () => {resolve(video);};});} catch (error) {errorDiv.textContent = '无法访问屏幕录制:' + error.message;throw error;}}async function loadModel() {try {model = await cocoSsd.load();} catch (error) {errorDiv.textContent = '无法加载模型:' + error.message;throw error;}}async function detectObjects() {try {const predictions = await model.detect(video);ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height);ctx.drawImage(video, 0, 0, ctx.canvas.width, ctx.canvas.height);predictions.forEach(prediction => {const [x, y, width, height] = prediction.bbox;ctx.strokeStyle = '#00FFFF';ctx.lineWidth = 2;ctx.strokeRect(x, y, width, height);ctx.fillStyle = '#00FFFF';ctx.font = '16px Arial';ctx.fillText(`${prediction.class} (${Math.round(prediction.score * 100)}%)`, x, y > 10 ? y - 5 : 10);if (!detections.has(prediction.class)) {const timestamp = new Date().toLocaleTimeString();detections.set(prediction.class, timestamp);updateDetectionsList();}});} catch (error) {console.error('检测对象时出错:', error);}setTimeout(detectObjects, 500); // 每2秒检测一次 (2 FPS)}function updateDetectionsList() {detectedObjects.innerHTML = '';detections.forEach((timestamp, objectClass) => {const li = document.createElement('li');li.textContent = `${objectClass} - 首次检测时间: ${timestamp}`;detectedObjects.appendChild(li);});}async function run() {try {await setupCamera();await loadModel();detectObjects();} catch (error) {console.error('应用程序初始化失败:', error);}}run();</script>
</body>
</html>

在这里插入图片描述

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

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

相关文章

openEuler安装docker,加速镜像拉取

文章目录 文章来源1.配置镜像源2.编辑配置文件3.安装想要的版本4. ~ 原神&#xff01;5.由于很多镜像无法拉取配置镜像源 文章来源 http://t.csdnimg.cn/zYDYy 原文连接 由于之前的仓库不让用且 1.配置镜像源 由于 国外的镜像仓库好多不让用 所以配置阿里的镜像源 yum-confi…

Memcached开发(七):使用Java进行操作

目录 1. 安装与配置Memcached 1.1 安装Memcached 1.2 配置Memcached 2. 使用Java与Memcached进行交互 2.1 安装Java客户端 2.2 连接Memcached 2.3 基本操作 2.3.1 设置键值对 2.3.2 获取键值对 2.3.3 删除键值对 2.3.4 检查键是否存在 2.3.5 增加和减少数值 2.4 高…

使用 com.alibaba:easyexcel 导出excel文件时遇到的问题

1.字符长度超出限制 java.lang.IllegalArgumentException: The maximum length of cell contents (text) is 32,767 characters 解决方案&#xff1a; 1. 把字符串截取前32767个字符 /*** sqlText 字段导出 excel 时的转化器*/ public class SqlTextConverter implements C…

javascript 如何将 json 格式数组转为 excel 表格| sheetJS

案例 // https://unpkg.com/xlsx0.18.5/dist/xlsx.full.min.js function exportXlsx(jsonData, fileName , mine null) {const workbook XLSX.utils.book_new();// 将JSON数组转换成工作表const worksheet XLSX.utils.json_to_sheet(jsonData);// 向工作簿添加工作表XLSX.…

建造者模式(Builder Pattern)工作原理

文章目录 [toc]建造者模式&#xff08;Builder Pattern&#xff09;工作原理一、基本概念二、主要角色三、工作流程&#xff08;一&#xff09;定义产品&#xff08;二&#xff09;定义抽象建造者&#xff08;三&#xff09;定义具体建造者&#xff08;四&#xff09;定义指挥者…

Git操作指令

Git操作指令 一、安装git 1、设置配置信息&#xff1a; # global全局配置 git config --global user.name "Your username" git config --global user.email "Your email"2、查看git版本号 git -v # or git --version3、查看配置信息&#xff1a; git…

云计算复习--虚拟化技术

文章目录 虚拟化技术定义与原理虚拟机监视器&#xff08;VMM&#xff09;虚拟化技术服务器虚拟化存储虚拟化网络虚拟化应用虚拟化 关键技术新型虚拟化技术发展进展作业 虚拟化技术定义与原理 定义&#xff1a;虚拟化技术是一种将计算机物理实体&#xff08;如服务器、存储设备…

携手知“食”达人,黄浦两大商圈举办舌尖上的创意盛宴

7月22日&#xff0c;2024第十二届上海市“中华杯”职业技能竞赛——中华美食创新创意大赛活动暨第二届【南京路步行街】新中式美食创意大赛暨风情【淮海路】摩登名点创新大赛顺利落下帷幕。活动现场&#xff0c; “‘盛夏好食光’——特色创意美食焕新菜单” 正式发布。 大赛主…

Spring Boot组成的分布式系统中实现日志跟踪

Spring Boot组成的分布式系统中实现日志跟踪 首发2024-07-25 08:54潘多编程 在分布式系统中&#xff0c;日志跟踪是一项非常重要的功能&#xff0c;它帮助开发者了解请求在整个系统中的流转过程&#xff0c;这对于调试、监控和故障排查至关重要。Spring Boot应用通常作为微服…

【cmd】Windows CMD命令整理及示例使用

1. dir 显示目录中的文件和子目录列表。 dir带参数使用示例&#xff1a; dir /p # 分页显示目录中的内容 dir /s # 显示指定目录及所有子目录中的文件 dir /a # 显示具有隐藏属性的文件2. copy 复制文件和目录。 copy source destination带参数使用示例&#xff1a; c…

养宠浮毛异味双困扰?性价比高的宠物空气净化器推荐

家里养了两只银渐层&#xff0c;谁懂啊&#xff01;一下班打开家门就看到家里飘满了猫浮毛雪&#xff0c;空气中还传来隐隐约约的异味。每天不是在吸毛的路上&#xff0c;就是在洗猫砂盆的路上&#xff0c;而且空气中的浮毛还很难清理干净&#xff0c;这是最让人头疼的问题。 …

SSM学习8:SpringMVC请求与响应

设置请求映射路径 设置配置 config/ServletContainersInitConfig.class public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {protected Class<?>[] getServletConfigClasses() {return new Class[]{SpringMvcC…

Golang | Leetcode Golang题解之第282题给表达式添加运算符

题目&#xff1a; 题解&#xff1a; func addOperators(num string, target int) (ans []string) {n : len(num)var backtrack func(expr []byte, i, res, mul int)backtrack func(expr []byte, i, res, mul int) {if i n {if res target {ans append(ans, string(expr))}…

stm32——lcd液晶显示

一.液晶屏介绍 液晶显示屏是由液晶显示面板&#xff0c;电容触摸屏&#xff0c;pcb底板构成。在液晶显示屏里我们有带控制芯片的还有不带控制芯片的。对于低端的微控制器它不能直接控制液晶面板&#xff0c;所以需要给液晶控制面板而外增加一个液晶控制芯片。对于单片机stm32f4…

销售分析,奥威BI,销售好帮手

【销售分析&#xff0c;奥威BI&#xff0c;销售好帮手】 在商海浮沉中&#xff0c;销售数据是企业最宝贵的资产之一&#xff0c;它不仅反映了市场的反馈&#xff0c;更是指引企业未来战略方向的灯塔。奥威BI&#xff08;Business Intelligence&#xff09;&#xff0c;作为数据…

openssl req 详解

一、openssl req 该命令用于创建和处理PKCS#10格式的证书请求&#xff08;certificate requests CSRs&#xff09;&#xff0c;也可以用来创建自签名证书&#xff08; self-signed certificates&#xff09;来当作根证书&#xff08;root CAs&#xff09;使用 -new 该选项用来…

硅纪元视角 | Stability AI推出Stable Video 4D,40秒生成8角度动态视频!

在数字化浪潮的推动下&#xff0c;人工智能&#xff08;AI&#xff09;正成为塑造未来的关键力量。硅纪元视角栏目紧跟AI科技的最新发展&#xff0c;捕捉行业动态&#xff1b;提供深入的新闻解读&#xff0c;助您洞悉技术背后的逻辑&#xff1b;汇聚行业专家的见解&#xff0c;…

SpringBoot集成Tomcat、DispatcherServlet

通过 SpringBoot 自动配置机制&#xff0c;导入配置类 利用 SpringBoot 自动配置机制&#xff0c;SpringBoot 会导入一个类型为 ServletWebServerFactoryAutoConfiguration 的配置类 ServletWebServerFactoryAutoConfiguration ServletWebServerFactoryAutoConfigurations 类上…

C# VS2019 Form 图标的修改

一、 窗口的左上角图标 1、Form的属性中找到Icon项直接选择图标&#xff08;.ico&#xff09;路径,窗口左上角会自动更新选择更新的图标。 Form属性 2.发布后的exe图标

谷粒商城实战笔记-48~49-商品服务-API-三级分类-查询-树形展示三级分类数据-前端优化

文章目录 一&#xff0c;48-商品服务-API-三级分类-查询-树形展示三级分类数据1&#xff0c;创建商品服务命名空间2&#xff0c;商品服务增加配置3&#xff0c;网关增加商品服务的路由配置4&#xff0c;前端树形展示5&#xff0c;测试 二&#xff0c;49-商品服务-API-三级分类-…