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

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

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

最近放假看到YOLOv8一直在更新,想着在家无聊把本科毕设重新做了下,之前用的是YOLOv5,下载了YOLOv8最新版把项目迁移了过来,相比于v5来说YOLOv8变化还是挺大的,功能更加集成了,话不多说,直接上结果图片和最后的检测视频

数字式仪表识别效果

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

指针式仪表识别效果

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

360度指针式仪表识别效果

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

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

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

整体思路流程

YOLOv8的检测结果更加集成了,可以在JupyterLab中根据检测结果一步步获取目标框的位置信息,不用像yolov5一样还得在源码里找到对应参数再更改那么麻烦,再根据JupyterLab调试结果把代码合成一个py文件,就方便很多。数字式仪表读数和指针式仪表读数实现的具体思路在后面。

文章(一)主要介绍①不同规格仪器仪表图像识别(识别结果裁剪出来作为数字式仪表和指针式仪表读数识别的数据集)、②数字式仪表读数识别(读数思路、PyQt界面显示等)

关于两种指针式仪表的读数识别将会在文章(二)介绍。

以下是当时论文整体流程图以及图像获取系统图,可以参考,内容主要包括不同规格仪器仪表图像识别、数字式仪表读数识别、指针式仪表读数识别、360度指针式仪表读数识别等。

整体流程图

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

图像获取系统图

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

不同规格仪器仪表图像识别(较基础可跳过)

不同规格仪表图像检测路线图及一些方法

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

数据集准备

分为数据集和验证集共135张图像。部分图像如下所示。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

透视矫正

校正前图片和校正后结果图片如下。由于代码较长且实现不太复杂就不放了。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

图像标注

使用LabelImg或者Makesence都可以,这部分就不用多说了。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

数据增强

使用随机裁剪、随机缩放、随机旋转、图像镜像以及颜色增强等数据增强方法。由于代码较长且实现不太复杂就不放了。效果图及对应xml如下。YOLO标注为txt文件,可转为xml文件。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

检测结果

正常训练检测就好,这个也比较基础,没什么说的。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

图像分割

针对不同类型的仪器仪表识别训练好的模型,根据检测结果计算出需要裁剪的区域,将其裁剪下来并保存,由此构成数字式仪器仪表识别的数据集。分割后部分图像如下,以及裁剪代码。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

import os
import cv2


def main():
    img_path = 'C:/Users/wsz/Desktop/ultralytics/datasets/mydata_type/images/train'  # 图片路径
    label_path = 'C:/Users/wsz/Desktop/ultralytics/tools_testpic/caijian/predict/labels'  # txt文件路径
    save_path = 'C:/Users/wsz/Desktop/ultralytics/tools_result/caijianhou'    # 保存路径

    img_total = []
    label_total = []
    imgfile = os.listdir(img_path)
    labelfile = os.listdir(label_path)

    for filename in imgfile:
        name, type = os.path.splitext(filename)
        if type == ('.jpg' or '.png'):
            img_total.append(name)
    for filename in labelfile:
        name, type = os.path.splitext(filename)
        if type == '.txt':
            label_total.append(name)



    for _img in img_total:
        if _img in label_total:
            filename_img = _img + '.jpg'
            path = os.path.join(img_path, filename_img)
            img = cv2.imread(path)  # 读取图片,结果为三维数组
            filename_label = _img + '.txt'
            w = img.shape[1]  # 图片宽度(像素)
            h = img.shape[0]  # 图片高度(像素)
            n = 1
            # 打开文件,编码格式'utf-8','r+'读写
            with open(os.path.join(label_path, filename_label), "r+", encoding='utf-8', errors="ignor") as f:
                for line in f:
                    msg = line.split(" ")  # 根据空格切割字符串,最后得到的是一个list
                    x1 = int((float(msg[1]) - float(msg[3]) / 2) * w)  # x_center - width/2
                    y1 = int((float(msg[2]) - float(msg[4]) / 2) * h)  # y_center - height/2
                    x2 = int((float(msg[1]) + float(msg[3]) / 2) * w)  # x_center + width/2
                    y2 = int((float(msg[2]) + float(msg[4]) / 2) * h)  # y_center + height/2
                    filename_last = _img + "_1" + ".jpg"
                    print(filename_last)
                    img_roi = img[y1:y2, x1:x2] # 剪裁,roi:region of interest
                    cv2.imwrite(os.path.join(save_path, filename_last), img_roi)
                    n = n + 1
        else:
            continue

if __name__ == '__main__':
    main()

数字式仪表读数识别

数据集准备+标注

标签选择数字“0-9” 和小数点“.”以及常见的“m,k,A,V,Ω,M,W,h”等单位,共标注图像 180 张。下图为部分数据集。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

检测效果

之前加入混洗注意力机制,效果如下。从图中可以看到,对数字及单位识别的置信度水平均在 96%以上,最高的达到了 98%,表明模型训练效果较好,达到了较高的水平。训练过程mAP变化在Origin中绘制如下,有s、m、l、x、x_AT(加入了注意力机制)五条曲线。

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

读数思路

之前在YOLOv5中是在源码中找到目标框的相关坐标参数,来进行修改显示,在YOLOv8中,由于检测结果的集成,可以根据检测结果result接收这一参数,对result的[0]里面的boxes的数据进行处理:

选取data和xywh,由于data里的坐标参数为目标框架的四个边缘坐标以及目标框的置信度及类别,xywh为目标框的中心xy坐标以及wh,所以将data里的最后一列类别提取出来加入到xywh中加入后的xywh根据第一列x的坐标从小到大进行排列,由此可得出对应类别的排序,最后提取最后一列类别,转为python列表,根据result的names使用列表推导和字典的get方法获取对应键值即可完成检测结果的从左到右排序,转为相应类型如字符串输出即可。

PyQt界面显示

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

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法文章来源地址https://www.toymoban.com/news/detail-825631.html

YOLOv8+PyQt+OpenCV实现数字式仪表读数和指针式仪表读数识别(一),数字式仪表,指针式仪表,仪表读数识别,YOLO,yolov8,pyqt,python,opencv,人工智能,算法

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

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

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

相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    2024年02月04日
    浏览(49)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包