0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

opencv如何读取仪表中的指针刻度

新机器视觉 来源:机器学习AI算法工程 作者:机器学习AI算法工 2022-04-13 14:20 次阅读

最近遇到一个问题,如何读取仪表中的指针指向的刻度

解决方法有多种,比如,方案一:模板匹配+边缘检测+霍夫直线检测,方案二:神将网络(CNN)目标定位等,

其中CNN就有点麻烦了,需要一定数量的训练样本,太麻烦,而方案一太普通,最后我采用了方案三,

方案三:模板匹配+k-means+直线拟合

具体做法如下:

首先说一下模板匹配,它是OpenCV自带的一个算法,可以根据一个模板图到目标图上去寻找对应位置,如果模板找的比较好那么效果显著,这里说一下寻找模板的技巧,模板一定要标准、精准且特征明显。

第一次的模板选取如下:

94ea088a-ba81-11ec-aa7f-dac502259ad0.png

匹配的效果如下:

950e3eb2-ba81-11ec-aa7f-dac502259ad0.png

根据模板选取的原则我们,必须进行两次匹配才能的到精确和更高准确率的结果

第二次的模板如下:

952d293a-ba81-11ec-aa7f-dac502259ad0.png

然后在第一次结果的的基础上也就是蓝色矩形框区域进行第二次匹配,结果如下:

954926ee-ba81-11ec-aa7f-dac502259ad0.png

下面对上图进行k-means二值化,由于途中的阴影,所以只截取原图的0.6(从中心)作为k-means聚类的样本点,然后将聚类结果应用至上图并重新二值化(聚类结果为2,求中值,根据中值二值化),同时只保留内切圆部分,效果如下:

956171f4-ba81-11ec-aa7f-dac502259ad0.png

接下来就是拟合直线,拟合直线我采用旋转虚拟直线法,假设一条直线从右边0度位置顺时针绕中心旋转当它转到指针指向的位置时重合的最多,此时记录下角度,最后根据角度计算刻度值。效果图如下:

9575b01a-ba81-11ec-aa7f-dac502259ad0.png

最后就读取到了数值:

聚类结果:

[[31.99054054 23.04324324 14.89054054]

[62.69068323 53.56024845 40.05652174]]

重合数量和对应角度:(1566, 158)

对应刻度:36.005082940886126

源码如下:

958c1dd2-ba81-11ec-aa7f-dac502259ad0.png

95a4ab22-ba81-11ec-aa7f-dac502259ad0.png

95b84d1c-ba81-11ec-aa7f-dac502259ad0.png

95d43e46-ba81-11ec-aa7f-dac502259ad0.png

95ea2e40-ba81-11ec-aa7f-dac502259ad0.png

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4565

    浏览量

    92231
  • OpenCV
    +关注

    关注

    29

    文章

    622

    浏览量

    41140
  • cnn
    cnn
    +关注

    关注

    3

    文章

    349

    浏览量

    22055

原文标题:opencv如何读取仪表中的指针刻度

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电流计指针偏转方向是正极还是负极

    “0”刻度在中间,正极在右侧,负极在左侧),当电流从正极流入时,指针会向右偏转;当电流从负极流入时,指针会向左偏转。 简而言之,电流从哪极流入,指针就往哪方向偏转。 特殊情况 : 如果
    的头像 发表于 09-19 15:18 553次阅读

    面试常考+1:函数指针指针函数、数组指针指针数组

    在嵌入式开发领域,函数指针指针函数、数组指针指针数组是一些非常重要但又容易混淆的概念。理解它们的特性和应用场景,对于提升嵌入式程序的效率和质量至关重要。一、
    的头像 发表于 08-10 08:11 455次阅读
    面试常考+1:函数<b class='flag-5'>指针</b>与<b class='flag-5'>指针</b>函数、数组<b class='flag-5'>指针</b>与<b class='flag-5'>指针</b>数组

    OpenCV图像识别C++代码

    的头文件 在您的C++代码,包含以下必要的头文件: # include # include # include # include # include # include # include 读取图像
    的头像 发表于 07-16 10:42 1294次阅读

    opencv-python和opencv一样吗

    不一样。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。OpenCV
    的头像 发表于 07-16 10:38 591次阅读

    opencv的主要功能有哪些

    OpenCV提供了丰富的图像处理功能,包括图像的读取、显示、保存、转换等。此外,OpenCV还支持图像的滤波、边缘检测、形态学操作、图像金字塔等高级图像处理技术。 特征检测与描述:OpenC
    的头像 发表于 07-16 10:35 952次阅读

    Keil+C51对双数据指针的直接利用

    Keil+C51对双数据指针的直接利用
    发表于 06-18 10:15 0次下载

    三菱plc读取485仪表程序案例教程

    ,实现自动化控制。其中,通过RS-485通信接口与485仪表进行通信是一种常见的应用场景。本文将详细介绍如何使用三菱PLC读取485仪表的程序案例,包括硬件连接、通信协议、程序编写和调试等环节。 一、硬件连接 硬件设备 三菱PL
    的头像 发表于 06-16 09:16 3550次阅读

    ELF 1技术贴|如何在Ubuntu编译OpenCV

    在之前发布的文章探讨了交叉编译OpenCV并部署至嵌入式系统的方法。然而,在调试阶段,我们发现在Ubuntu环境下将OpenCV编译为X86架构可能更加方便和高效。通过在主机上编译并使用X86架构
    的头像 发表于 05-31 16:41 1073次阅读
    ELF 1技术贴|如何在Ubuntu<b class='flag-5'>中</b>编译<b class='flag-5'>OpenCV</b>库

    电子电工常用仪器仪表及设备,一口气整理!

    在电子电工行业,有一些基本的仪器仪表及设备是需要熟知的,这些仪器仪表及设备于日常工作至关重要。1指针式万用表指针式万用表使用机械指针
    的头像 发表于 05-17 08:20 881次阅读
    电子电工常用仪器<b class='flag-5'>仪表</b>及设备,一口气整理!

    指针式万用表的使用方法

    在使用指针式万用表之前,需要观察万用表的指针是否与零刻度线对齐和重合。如果不重合,就需要进行调零操作,否则会影响读数,使测量结果不准确。调零操作包括机械调零和欧姆调零。机械调零是通过调整表盘中间
    的头像 发表于 05-09 18:23 1244次阅读

    HDJZ-3E型便携式交直流指示仪表检定装置基本概念与操作

    刻度刻度值的概念:在本装置某点的刻度值指该点的被测物理量的标度大小。要使被检表的指针转到该点时,理论上本装置要输出对应大小的物理量。例如
    的头像 发表于 04-11 09:18 203次阅读
    HDJZ-3E型便携式交直流指示<b class='flag-5'>仪表</b>检定装置基本概念与操作

    怎么理解指针指针

    怎么理解指针指针?其实这个概念并不难,只是把它放到实际应用,容易造成困扰。
    的头像 发表于 02-23 16:46 849次阅读
    怎么理解<b class='flag-5'>指针</b>的<b class='flag-5'>指针</b>?

    使用OpenCV进行仪表指针刻度的识别与读取

    首先说一下模板匹配,它是OpenCV自带的一个算法,可以根据一个模板图到目标图上去寻找对应位置,如果模板找的比较好那么效果显著,这里说一下寻找模板的技巧,模板一定要标准、精准且特征明显。
    发表于 02-22 13:54 1576次阅读
    使用<b class='flag-5'>OpenCV</b>进行<b class='flag-5'>仪表</b><b class='flag-5'>指针</b><b class='flag-5'>刻度</b>的识别与<b class='flag-5'>读取</b>

    指针万用表读数的方法

    电阻值读数:从电阻值刻度尺读数。指针在15~20间,在这一大格,有5个小格是平均分配的,每小格为1,因此,指针指示为17。将17乘以电阻挡倍数,如果旋钮在R×100挡上,则该数值表示
    的头像 发表于 12-14 13:30 5806次阅读
    <b class='flag-5'>指针</b>万用表读数的方法

    指针是什么

    指针是什么? 1.1 浅谈指针 理解指针的 两个要点: 指针是内存中一个最小单元的编号,也就是地址; 平时口语说的
    的头像 发表于 11-24 15:50 1833次阅读
    <b class='flag-5'>指针</b>是什么