最近研究了一个项目,利用python代码实现指针式圆形仪表的自动读数,并将读数结果进行输出,若需要完整数据集和源代码可以私信。
目录
🍓🍓1.yolov8实现圆盘形仪表智能读数
🙋🙋2.表盘智能读数
🍋2.1圆形表盘转成矩形
可以看到,将矩形展开指针和点位,就可以明显看到指针所在的表盘刻度位置信息了,因此后续我们就可以通过在该图上计算指针占表盘的占比就可以知道读数。
🍋2.2根据展开矩形图计算表盘和指针中心线
🍋2.3根据占比计算读数
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
🍓🍓1.yolov8实现圆盘形仪表智能读数
实现的效果如下:
对整个项目来说,可分为三个大步骤:
- 仪表目标检测
- 仪表表盘指针分割
- 计算读数
此篇先将仪表目标检测,将原图中的表盘识别出来。
🙋🙋2.表盘智能读数
表盘位置识别出来,并且知道了指针位置之后,就可以进行仪表智能读数了。本文中采用将圆形表盘通过球坐标转直角坐标的方式进行圆形转矩形,然后通过矩形来技术指针在表盘中的具体位置,最后通过所占比例进行读数估计。
🍋2.1圆形表盘转成矩形
首先,我们预测出来的表盘和指针位置图片,如下图所示。
然后将其转成矩形进行展示如下:
可以看到,将矩形展开指针和点位,就可以明显看到指针所在的表盘刻度位置信息了,因此后续我们就可以通过在该图上计算指针占表盘的占比就可以知道读数。
当然也可以不展开成矩形,直接根据点位的[<x1,y1>,<x2,y2>,...,]坐标和指针顶端的位置<x,y>,进行一个角度的位置判断。
🍋2.2根据展开矩形图计算表盘和指针中心线
计算每根刻度线的中心点的横坐标,因为横坐标代表了其位置,每根线的纵坐标是几乎相同的。同样的方法,计算指针的中心点的横坐标。
根据此展开图,获取指针分割图普通坐标轴中x轴方向的位置:
zhizhen: 125
同样的得到刻度线所处的位置:
point_line:[62, 69, 74, 80, 85, 90, 96, 101, 106, 112, 117, 122, 127, 133, 138, 143, 148, 153, 159, 164, 169, 174, 179, 184, 189, 194, 199, 205, 210, 215, 220, 225, 230, 235, 240, 246, 251, 256, 261, 266, 271, 276, 281, 287, 292, 297, 302, 307, 312, 317]
然后就可以计算指针位置在哪两个刻度之间,并且占百分比是多少,就可以轻松计算出指针所在位置占总表盘的百分比了。
python代码计算打印信息如下:
biao con: 50
[62, 69, 74, 80, 85, 90, 96, 101, 106, 112, 117, 122, 127, 133, 138, 143, 148, 153, 159, 164, 169, 174, 179, 184, 189, 194, 199, 205, 210, 215, 220, 225, 230, 235, 240, 246, 251, 256, 261, 266, 271, 276, 281, 287, 292, 297, 302, 307, 312, 317]
gramma: 5
zhen con: 1
scale_locations: [[62, 69, 74, 80, 85, 90, 96, 101, 106, 112, 117, 122, 127, 133, 138, 143, 148, 153, 159, 164, 169, 174, 179, 184, 189, 194, 199, 205, 210, 215, 220, 225, 230, 235, 240, 246, 251, 256, 261, 266, 271, 276, 281, 287, 292, 297, 302, 307, 312, 317]]
pointer_locations [[125]]
12.6
zhizhenweizhi: 12.6
12.6
dushu: [6.3]
🍋2.3根据占比计算读数
这里要注意,要通过占比计算读数首先要知道表的量程,或者是统一规格的表,哪怕刻度线不一致,只要刻度线个数和表的量程能一一对应也可以,此处假设表的量程为50。
从上一步计算得到指针的占比,再简单乘法计算就可以知道读数了
读数 = 量程 * 占比
比如下图的读数为6.3
dushu: [6.3]
至此就大功告成了,一个完整的圆形仪表智能读数项目就到此结束了,当然还有很多小瑕疵,但是基本的功能是可以实现了的,在这里小小记录一下,以免以后自己忘掉了。
传送门:
[YOLOv8] 用YOLOv8实现指针式圆形仪表智能读数(一)
[YOLOv8] 用YOLOv8实现指针式圆形仪表智能读数(二)
整理不易,欢迎一键三连!!!
送你们一条美丽的--分割线--
🌷🌷🍀🍀🌾🌾🍓🍓🍂🍂🙋🙋🐸🐸🙋🙋💖💖🍌🍌🔔🔔🍉🍉🍭🍭🍋🍋🍇🍇🏆🏆📸📸⛵⛵⭐⭐🍎🍎👍👍🌷🌷