基于深度学习的仪表读数读取

基于深度学习的仪表盘识别

代码:https://github.com/HibikiJie/ReadMeter

权重文件:链接: https://pan.baidu.com/s/1wTPo1wJXrNyEFSu8RrD8Xw 密码: t0p4
将其放置于weight文件夹下,运行test.py,即可测试data\images\val下的图像文件

讲解

  1. 使用语义分割模型,在不同通道上分割出表盘和指针
  2. 环形的表盘展开为矩形图像
  3. 二维图像转换为一维数组
  4. 对刻度数组用均值滤波
  5. 定位指针相对刻度的位置
  6. 输出相对位置

语义分割模型采用的是 U2Net

1、分割

基于深度学习的仪表读数读取

基于深度学习的仪表读数读取

使用U2NET分割得到指针和表盘的图像

; 2、表盘展开

通过以图像中心为原点,以一定宽度进行扫描,将仪表盘的刻度和指针展开为矩形的图像。

基于深度学习的仪表读数读取

3、二维图像转换为一维数组

两张图像通过竖向叠加,转变为一维数组,绘制为折线图,如下图所示。

基于深度学习的仪表读数读取

代码示例如下

def convert_1d_data(self, line_image):
"""
    将图片转换为1维数组
    :param line_image: 展开的图片
    :return: 一维数组
"""
    data_1d = numpy.zeros((self.line_width), dtype=numpy.int16)
    for col in range(self.line_width):
        for row in range(self.line_height):
            if line_image[row, col] == 1:
                data_1d[col] += 1
    return data_1d

通过定位每一个尖峰的点,即可得刻度盘的个度数量,以及刻度的位置。

并可定位到指针在刻度盘中的相对位置,即可得到该表盘的百分比数值。

输出为:

{'scale_num': 32, 'num_sacle': 12.643678012947584, 'ratio': 0.39573756459893383}

其中指针的相对位置为 0.39573756459893383

而满刻度值为1.6,即可得度数为0.633

Original: https://blog.csdn.net/weixin_48866452/article/details/123353367
Author: 「已注销」
Title: 基于深度学习的仪表读数读取

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/708147/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球