当前位置: 首页 > news >正文

Baumer工业相机堡盟工业相机如何通过YoloV8模型实现人物识别(C#)

在这里插入图片描述

Baumer工业相机堡盟工业相机如何通过YoloV8模型实现人物识别(C#代码,UI界面版)

  • 工业相机使用YoloV8模型实现人物识别
  • 工业相机实现YoloV8模型实现人物识别的技术背景
  • 在相机SDK中获取图像转换图像的代码分析
    • 工业相机图像转换Bitmap图像格式和Mat图像重要核心代码
    • 本地文件图像转换Bitmap图像格式和Mat图像重要核心代码
    • Mat图像导入YoloV8模型重要核心代码
    • 代码实现演示(实现人物识别)
  • 源码下载链接
  • 工业相机通过YoloV8模型实现人物识别的行业应用

工业相机使用YoloV8模型实现人物识别

本项目集成了 YOLOv8 表情检测模型 与 C#图形界面工具,实现了包括图片、文件夹、视频与摄像头等多种输入方式的人物识别功能。

工业相机RAW文件是一种记录了工业相机传感器的原始信息,同时记录了由相机拍摄所产生的一些原数据(Metadata,如ISO的设置、快门速度、光圈值、白平衡等)的文件。RAW是未经处理、也未经压缩的格式,可以把RAW概念化为“原始图像编码数据”。

工业相机Bitmap图像是一种无损的图像格式,它将图像存储为像素阵列,并可包含调色板信息。这种格式通常用于工业应用中,因为它能够保留图像的细节和质量,并且易于处理和分析。

本文以Baumer工业相机作为案例进行演示,实现将工业相机的图像或者本地图像导入Yolo模型从而实现人物识别等功能。

工业相机实现YoloV8模型实现人物识别的技术背景

本文通过C#中实现一个简单的UI界面,用于将YoloV8模型实现人物识别

用户可以通过该界面执行以下操作:

  1. 转换相机图像为Mat图像:通过YoloV8模型实现人物识别

  2. 转换本地图像为mat图像:通过YoloV8模型实现人物识别

通过这个UI界面,用户能够在实时应用机器视觉数据处理时快速有效地进行操作,无需深入了解图像数据的底层处理过程。这个简单的介绍旨在为开发人员提供一个明确的方向,以便开始构建此类应用程序,并且该程序主要用于演示目的。

在相机SDK中获取图像转换图像的代码分析

本文介绍使用Baumer工业相机,实现将图像转换为Bitmap图像,再转换Mat图像,导入到Yolo模型进行推理,输出人物识别的结果。

工业相机图像转换Bitmap图像格式和Mat图像重要核心代码

//将相机内部图像内存数据转为bitmap数据
System.Drawing.Bitmap bitmap  = new System.Drawing.Bitmap((int)mBufferFilled.Width, (int)mBufferFilled.Height,(int)mBufferFilled.Width,System.Drawing.Imaging.PixelFormat.Format8bppIndexed, (IntPtr)((ulong)mBufferFilled.MemPtr + mBufferFilled.ImageOffset));#region//Mono图像数据转换。彩色图像数据转换于此不同
System.Drawing.Imaging.ColorPalette palette = bitmap.Palette;
int nColors = 256;
for (int ix = 0; ix < nColors; ix++)
{uint Alpha = 0xFF;uint Intensity = (uint)(ix * 0xFF / (nColors - 1));palette.Entries[ix] = System.Drawing.Color.FromArgb((int)Alpha, (int)Intensity,(int)Intensity, (int)Intensity);
}
bitmap.Palette = palette;
#endregionstring strtime = DateTime.Now.ToString("yyyyMMddhhmmssfff");
string saveimagepath = pImgFileDir + "\\" + strtime + ".brw";//使用Bitmap格式保存         
bitmap.Save(saveimagepath, System.Drawing.Imaging.ImageFormat.Bmp);  //用bitmap转换为mat
OpenCvSharp.Mat Matgray1 = OpenCvSharp.Extensions.BitmapConverter.ToMat(bitmap);

本地文件图像转换Bitmap图像格式和Mat图像重要核心代码

C#环境下代码如下所示:

if (imagePaths.Count() == 0)
{LoadImagePaths("test_img");
}string currentImagePath = imagePaths[currentImageIndex];// 显示到pictureBoxA
pictureBoxA.Image.Dispose(); // 释放上一张图片资源,避免内存泄漏
pictureBoxA.Image = new Bitmap(currentImagePath);
image_path = currentImagePath;currentImageIndex = (currentImageIndex + 1) % imagePaths.Count;OnNotifyShowRecieveMsg("检测中,请稍等……");
//textBox1.Text = "检测中,请稍等……";
//pictureBox2.Image = null;
Application.DoEvents();image = new Mat(image_path);float ratio = Math.Min(1.0f * inpHeight / image.Rows, 1.0f * inpWidth / image.Cols);
int neww = (int)(image.Cols * ratio);
int newh = (int)(image.Rows * ratio);Mat dstimg = new Mat();
Cv2.Resize(image, dstimg, new OpenCvSharp.Size(neww, newh));Cv2.CopyMakeBorder(dstimg, dstimg, 0, inpHeight - newh, 0, inpWidth - neww, BorderTypes.Constant);

Mat图像导入YoloV8模型重要核心代码

C#环境下代码如下所示:


Mat dstimg = new Mat();
Cv2.Resize(image, dstimg, new OpenCvSharp.Size(neww, newh));Cv2.CopyMakeBorder(dstimg, dstimg, 0, inpHeight - newh, 0, inpWidth - neww, BorderTypes.Constant);BN_image = CvDnn.BlobFromImage(dstimg);//配置图片输入数据
opencv_net.SetInput(BN_image);//模型推理,读取推理结果
Mat[] outs = new Mat[1] { new Mat() };
string[] outBlobNames = opencv_net.GetUnconnectedOutLayersNames().ToArray();dt1 = DateTime.Now;
opencv_net.Forward(outs, outBlobNames);
dt2 = DateTime.Now;

代码实现演示(实现人物识别)

在这里插入图片描述

源码下载链接

C# WinForms工业相机+本地图像 通过YoloV8模型实现人物识别 源码

工业相机通过YoloV8模型实现人物识别的行业应用

#行业场景核心价值典型部署形态与说明
1建筑工地-安全帽/工服合规检测7×24 小时自动抓拍未戴安全帽或未穿工服人员,降低事故率工业相机架设在塔吊/围挡,YOLOv8 同时检测“person”“helmet”“uniform”三类目标,发现违规立即声光报警并推送微信/钉钉
2智慧矿山-人员入侵禁区识别实时识别进入爆破区、运输巷道等危险区域的人员本安型工业相机 + 边缘计算盒,YOLOv8 只检测人,联动电子围栏与广播告警
3工厂生产线-到岗/离岗统计代替人工点检,自动统计工位人数,分析工时利用率固定在产线顶棚的工业相机,YOLOv8 检测人头并做简单跟踪,输出每班次在岗时长报表
4仓储物流-叉车与人混行预警识别行人并判断与叉车距离,减少碰撞顶装鱼眼工业相机 + 毫米波雷达融合,YOLOv8 输出“person”坐标,雷达测距,❤️ m 触发叉车车载警报器
5轨道交通-站台越线检测高铁/地铁站台边缘人员越界实时报警轨旁工业级高速相机,YOLOv8 检测人体下半部分,防止误报行李;信号直接接入车站 PA 系统
6能源电力-变电站周界安防识别翻越围墙、闯入高压区人员红外工业相机夜间工作,YOLOv8 配合 NPU 边缘节点,实现 50 m 长距离人体检测;联动云台追踪
7零售连锁-客流/热力分析统计进店人数、热点区域驻留时长天花板 6 mm 焦距工业相机,YOLOv8+DeepSort 多目标跟踪,输出分钟级客流和热力图
8智慧园区-人脸活体+门禁活体防伪替代刷卡,防止照片/视频攻击门禁闸机内置工业级全局快门相机,YOLOv8 先检测“person”再输出人脸 ROI,后续接入活体识别模型
9医疗护理-病房跌倒监测检测病人是否突然倒地,3 秒触发护士站报警病房顶部广角相机,YOLOv8 检测“person”姿态并计算骨骼关键点,跌倒姿态持续 3 帧即告警
10校园/考场-异常行为识别识别考场内站立、转身、传递物品等异常动作高清工业相机 + YOLOv8 目标检测 + ST-GCN 行为识别网络,实时推送到巡考 PAD
http://www.lryc.cn/news/591504.html

相关文章:

  • MacOS安装linux虚拟机
  • Kubernetes架构原理与集群环境部署
  • Spring Boot 自动配置:从 spring.factories 到 AutoConfiguration.imports 的演变
  • MySQL安全修改表结构、加索引:ON-Line-DDL工具有哪些
  • 数据产品结构:从数据接入到可视化的完整架构指南
  • 学习C++、QT---27(QT中实现记事本项目实现行列显示、优化保存文件的功能的讲解)
  • Spring Boot 参数校验:@Valid 与 @Validated
  • 关于vector中的erase的强调
  • Leetcode刷题营第二十八题:二叉树的前序遍历
  • Effective Python 条款7 用列表推导来取代map和filter
  • c++之 KMP 讲解
  • 网络原理 —— HTTP
  • 深入理解Collections.addAll方法
  • Python 离线安装 PyInstaller 的完整步骤(以python3.11.4-amd64.exe为例)
  • Trae IDE:打造完美Java开发环境的实战指南
  • 产品经理如何绘制服务蓝图(Service Blueprint)
  • 基于5G系统的打孔LDPC编码和均匀量化NMS译码算法matlab性能仿真
  • Oracle 成本优化器(CBO)与数据库统计信息:核心原理与实践
  • 线程(三) linux 同步
  • .NET Framework版本信息获取(ASP.NET探针),获取系统的.NET Framework版本
  • pycharm提交项目到github及问题解决
  • ubuntu基础搭建
  • 【Android代码】绘本翻页时通过AI识别,自动通过手机/pad朗读绘本
  • 基于单片机公交车报站系统/报站器
  • 分支和循环语句
  • Kotlin集合与空值
  • 使用位运算优化 Vue.js 应用:高效状态管理技巧
  • 学习 Flutter (四):玩安卓项目实战 - 中
  • 【LeetCode 热题 100】230. 二叉搜索树中第 K 小的元素——中序遍历
  • Java全栈面试实录:从电商支付到AIGC的深度技术挑战