YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(二)

这篇具有很好参考价值的文章主要介绍了YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(二)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

章(一)内容为不同种类仪表识别和数字式仪表读数识别,这一章介绍两种指针式仪表读数识别方法,一种为非360度指针式仪表,一种为360度指针式仪表。效果如下所示。

数字式仪表和两种指针式仪表读数识别

指针式仪表识别效果

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

360度指针式仪表识别效果

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

 数字式仪表识别效果

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

数字式仪表和指针式仪表检测视频

YOLOv8+PyQt+OpenCV+Python实现数字式仪表和两种指针式仪表读数识别

指针式仪表读数识别

检测流程图

采用YOLOv8+OpenCV方式完成指针式仪表的读数,流程图如下。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

表盘提取

通过 YOLO 仪表表盘定位算法可以获取到很好的仪表图像,其滤除了复杂的背景, 为接下来的仪表表盘分割操作节省了大量算力。

针对仪表在复杂环境下指针和刻度的轮廓分割问题为了保证提取出来的表盘准确,需要对其进行一定的预处理。对图像进行图像均值迁移模糊处理,使用 pyrMeanShiftFiltering 函数进行图像平滑滤波,以下为效果图。左边为原始图像,右边为经过色彩平滑滤波之后的图像。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

由于霍夫圆检测输入图像为灰度图,使用 COLOR_BGR2GRAY 函数转换图片为灰度图像。接着,使用 HoughCircles 函数进行圆形检测,采用霍夫梯度法。这种方法通过计算圆心的累加器阈值来实现检测,在阈值较小的情况下可以检测到更多原本不存在的圆形,而在阈值较大的情况下,则可以检测到更接近完美的圆形。通过这种方法,我们可以检测出表盘,并完成对表盘的提取。左边为灰度图,右边为提取表盘图。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

指针及圆心提取

为了保证提取出来的指针及圆心准确,首先,利用霍夫圆检测截取表盘区域并得到表盘中心点的坐标,但此时中心点与真正中心点有较大的误差,需要进一步优化。

然后对滤除背景的表盘进行高斯滤波,再转为灰度图并进行二值化操作。高斯滤波器能够对周围像素点的灰度值进行控制,从而降低噪音的影响。使用高斯滤波对图像处理之后,要先将图像转化为灰度图,再对图像进行二值化处理,以便提取指针及圆心。下图为经过高斯滤波和灰度变换之后的图像。左图为经过高斯滤波之后图像,右图为经过灰度变换之后图像。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

为了寻找表盘图像中的轮廓,使用 opencv 中的 findContours 函数。该函数可以定位指针和刻度线的轮廓,从而在二值化图像中找到轮廓并返回它们的列表和层次结构。根据轮廓中心点到使用霍夫圆检测出的表盘中心点的距离筛选出指针轮廓和刻度线轮廓,再将轮廓拟合成直线,完成对刻度线的检测。在得到所有刻度线后,将它们两两延长,获取所有交点,计算所有交点的 x 坐标和 y 坐标的平均值,这个平均值即为优化过后的表盘中心点坐标。得到各个轮廓中心点坐标(xi,yi)则有各个轮廓中心点到表盘中心点的距离di满足:

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

与识别表盘中心点初始步骤相同,筛选出指针轮廓后,得到指针轮廓中心点坐标 ( xi, yi) ,针对指针轮廓图像使用概率霍夫线变换函数检测图像中的直线,筛选出最长直线段,得到直线段两端的端点 ,计算直线段两端点与表盘中心点的距离,即

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

若 d1>d2 ,则指针端点为(xp1, yp1),否则指针端点为(xp2, yp2)。下图为经过二值化之后的图像及检测的结果。左图为经过二值化之后图像,右图为检测指针端点及表盘圆心。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

初始刻度和结束刻度检测数据集

标签选择为“Start Scale”和“End Scale”,部分数据集如下所示。训练部分比较基础不再展示。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

检测方法及读数思路

检测方法为角度法,即通过计算指针与指针式仪表刻度盘之间的夹角来确定指针所指向的刻度。其主要原理是利用指针与零刻度以及结束刻度的夹角,根据夹角占比计算指针的位置,进而读取刻度值。下图为角度法原理图。

思路主要是通过YOLOv8检测出的目标框位置信息data,对data最后一列即类别列进行排序,再获取其目标值第一列和第三列即为开始刻度线或结束刻度线的x坐标,第二列和第四列即为开始或结束刻度线的y坐标,即获得表盘开始刻度线和结束刻度线的坐标。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

设 0 刻度线中心点、圆心、指针端点、结束刻度线中心点分别为 P1、 P2、P3、P4,通过指针端点坐标、圆心坐标和 0 刻度线中心坐标计算 0 刻度线和指针所成的夹角,然后通过 0 刻度线中心坐标、圆心坐标、结束刻度线中心坐标计算 0 刻度线和终止刻度线所成夹角,通过两个夹角的占比再乘以仪表的量程即为指针式仪表的读数。以计算 0 刻度和指针所成角度为例:

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

PyQt界面

界面包括导入图片、开始检测、确认读数、修改读数、结果显示(包括当前时间、读数结果)、清除数据等操作,读数结果会保存在相应txt文件中,如下所示。其中确认读数会在文件中追加并显示"The reading is correct.",修改读数会自动读取模型的检测结果,修改后在文件中追加并显示"The corrected reading is:XXX"。以下为检测结果和程序界面。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

360度指针式仪表读数识别

数据集

部分数据集如下所示。训练部分比较基础不再展示。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

读数思路

与上个指针式仪表思路类似,通过YOLOv8检测出的目标框位置信息data,但不用再排序了,因为只有一行即0刻度线,随后再获取目标框的第一列和第三列,相加除以2即为目标框中心点的x坐标,第二列和第四列相加除以2即为目标框中心点的y坐标,即将检测框中心点(矩形对角线的交点)作为0刻线的坐标,随后与之前相同,运用角度法完成最终读数。

PyQt界面

界面包括导入图片、开始检测、确认读数、修改读数、结果显示(包括当前时间、读数结果)、清除数据等操作,读数结果会保存在相应txt文件中,如下所示。其中确认读数会在文件中追加并显示"The reading is correct.",修改读数会自动读取模型的检测结果,修改后在文件中追加并显示"The corrected reading is:XXX"。以下为检测结果和程序界面。

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

yolov 加仪表刻度识别,数字式仪表,指针式仪表,仪表读数识别,YOLO,pyqt,yolov8,python,opencv,人工智能,算法

总结心得

针对不同规格的仪器仪表进行图像识别检测。首先,针对图像数据集中存在的倾斜图像,采用透视变换进行校正。接着,使用 LabelImg 软件对这些图像进行标注,并采取了缩放、裁剪和旋转等方式进行数据增强。然后介绍了 YOLO模型,并进行模型训练及评估,通过测试集验证了训练结果的有效性,完成对不同规格的仪器仪表的识别。

针对数字式仪器仪表完成图像识别读数。根据上述对不同仪表识别训练好的模型对数据集进行图像分割,检测出表盘区域并将其裁剪保存,完成对数字式仪表数据集的构建。然后针对数字式仪器仪表,采用YOLO目标检测算法来检测和定位仪表的表盘。使用 s、m、l、x 四种不同模型进行训练,并对结果进行分析。在 x 模型中加入注意力机制,对结果进行了分析和比较,实现对多个数字的识别和读数,同时确保数字检测的精度与效率,通过测试集对置信度水平、精确率以及召回率等训练结果进行验证,将检测到的数据结果显示在PyQt界面并保存。

针对指针式仪器仪表完成图像识别读数。根据模型检测出表盘区域并将其裁剪保存,完成数据集的构建,然后基于YOLO目标检测算法检测识别出表盘零刻度线和结束刻度线的位置,同时利用图像处理技术如霍夫圆检测等裁剪出表盘区域,然后运用高斯滤波、二值化等算法对仪表的刻度线、指针和圆心进行提取拟合,利用角度法完成对指针式仪表的读数,并将结果显示在PyQt 界面并保存。

还有很多待改进的地方,有时候指针式仪表检测效果还不是很准确,但作为毕设应该是足够的,也欢迎大家一起交流学习,有什么问题可以留言或者私信我,能解答的会一一回复。文章来源地址https://www.toymoban.com/news/detail-841228.html

到了这里,关于YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 是否佩戴安全帽识别从零开始使用YOLOv5+PyQt5+OpenCV实现

    全流程 教程,从数据采集到模型使用到最终展示。若有任何疑问和建议欢迎评论区讨论。 先放上最终实现效果 检测效果 在施工现场,对于来往人员,以及工作人员而言,安全问题至关重要。而安全帽更是保障施工现场在场人员安全的第一防线,因此需要对场地中的人员进行

    2024年02月03日
    浏览(35)
  • [C++]使用yolov8的onnx模型仅用opencv和bytetrack实现目标追踪

    【官方框架地址】 yolov8: https://github.com/ultralytics/ultralytics bytetrack: https://github.com/ifzhang/ByteTrack 【算法介绍】 随着人工智能技术的不断发展,目标追踪已成为计算机视觉领域的重要研究方向。Yolov8和ByTetrack作为当前先进的算法,当它们结合使用时,能够显著提升目标追踪的准

    2024年01月24日
    浏览(35)
  • [python]使用pyqt5搭建yolov8 竹签计数一次性筷子计数系统

    【官方框架地址】 github地址:https://github.com/ultralytics/ultralytics 【算法介绍】 Yolov8是一种先进的深度学习算法,用于目标检测任务,特别是针对图像中物体的实时检测。它是Yolov3和Yolov4之后的又一重要迭代,带来了诸多改进和新特性。本文将详细介绍Yolov8算法的原理、特点、

    2024年04月10日
    浏览(36)
  • 吸烟检测从零开始使用YOLOv5+PyQt5+OpenCV实现(支持图片、视频、摄像头实时检测)

    全流程 教程,从数据采集到模型使用到最终展示。若有任何疑问和建议欢迎评论区讨论。 先放上最终实现效果 检测效果 由上图我们可以看到,使用YOLOV5完成了吸烟的目标识别检测,可以达到mAP可达85.38%。通过对吸烟的自动检测可以方便商场、医院、疗养院等公共场合进行禁

    2024年02月09日
    浏览(41)
  • 基于YOLOv8的摔倒行为检测系统(Python源码+Pyqt6界面+数据集)

    💡💡💡 本文主要内容:通过实战基于YOLOv8的摔倒行为检测算法,从数据集制作到模型训练,最后设计成为检测UI界面 人体行为分析AI算法,是一种利用人工智能技术对人体行为进行检测、跟踪和分析的方法。通过计算机视觉、深度学习和模式识别等技术,可以实现对人体姿态

    2024年01月25日
    浏览(38)
  • 基于YOLOv8的PCB缺陷检测系统(Python源码+Pyqt6界面+数据集)

    💡💡💡 本文摘要:基于YOLOv8的PCB缺陷检测系统,并阐述了整个数据制作和训练可视化过程, 最后通过Pyside UI界面进行展示。 博主简介 AI小怪兽,YOLO骨灰级玩家,1)YOLOv5、v7、v8优化创新,轻松涨点和模型轻量化;2)目标检测、语义分割、OCR、分类等技术孵化,赋能智能制

    2024年04月10日
    浏览(61)
  • OpenCV与AI深度学习 | 实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程)

    本文来源公众号 “OpenCV与AI深度学习” ,仅用于学术分享,侵权删,干货满满。 原文链接:实战 | YOLOv8自定义数据集训练实现手势识别 (标注+训练+预测 保姆级教程)     本文将手把手教你用YoloV8训练自己的数据集并实现手势识别。 【1】安装torch, torchvision对应版本,这里先

    2024年04月23日
    浏览(63)
  • 烟雾和火灾检测从零开始使用YOLOv5+PyQt5+OpenCV实现(支持图片、视频、摄像头实时检测)

    全流程 教程,从数据采集到模型使用到最终展示。若有任何疑问和建议欢迎评论区讨论。 先放上最终实现效果 图片检测效果 视频检测效果 针对住宅、加油站、公路、森林等火灾高发场景,可以自动检测监控区域内的烟雾和火灾,帮助相关人员及时应对,最大程度降低人员

    2024年02月11日
    浏览(39)
  • 智能零售柜商品识别从零开始使用YOLOv5+PyQt5+OpenCV实现(支持图片、视频、摄像头实时检测)

    全流程 教程,从数据采集到模型使用到最终展示。若有任何疑问和建议欢迎评论区讨论。 先放上最终实现效果 检测效果 智能零售柜商品识别,当顾客将自己选购的商品放置在制定区域的时候,能精准地识别每一个商品,从而能够返回完整地购物清单及计算顾客应付的实际商

    2024年02月08日
    浏览(36)
  • 佩戴口罩检测从零开始使用YOLOv5+PyQt5+OpenCV+爬虫实现(支持图片、视频、摄像头实时检测,UI美化升级)

    全流程 教程,从数据采集到模型使用到最终展示。 支持图片检测、视频检测、摄像头实时检测,还支持视频的暂停、结束等功能。若有任何疑问和建议欢迎评论区讨论。 先放上最终UI实现效果 图片检测效果图 视频检测效果图 摄像头实时检测效果图 我已经处理了一份数据形

    2024年02月04日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包