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

    文章

    4716

    浏览量

    95767
  • OpenCV
    +关注

    关注

    32

    文章

    643

    浏览量

    43109
  • cnn
    cnn
    +关注

    关注

    3

    文章

    354

    浏览量

    22783

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    称重控制仪表通过工业网关数据采集到MES系统

    数据,PLC通过读取称重数据从而实现自动混料、上下料等操作,提高了生产效率和产品质量。 为实现称重控制仪表数据采集到MES系统,物通博联提供基于工业智能网关的解决方案。网关具备多个串口/网口通信接口,支持MODBUS RTU和
    的头像 发表于 06-19 13:57 ?251次阅读

    为LSDK构建opencv时遇到的问题求解

    我正在尝试使用 flex-builder 来运行 bld -c opencv -r ubuntu:桌面 我想要最新版本的 OpenCV。在我的 sdk.yml 文件,我将 opencv
    发表于 03-26 08:26

    RTOS的本地存储指针使用

    本地存储指针是RTOS的一个重要特性,增强了任务管理和数据处理能力。在RTOS上下文中,本地存储是指存储在本地的特定任务或对象的数据。通常与任务本地存储(Task Local Storage,TLS)有关,其中数据存储在任务控制块(TCB)
    的头像 发表于 02-28 16:33 ?950次阅读
    RTOS<b class='flag-5'>中</b>的本地存储<b class='flag-5'>指针</b>使用

    指针式万用表测量电压技巧

    主要刻度盘:一个用于测量交流电压(AC),另一个用于测量直流电压(DC)。每个刻度盘都有不同的量程,用于测量不同范围的电压。 2. 选择合适的量程 测量电压时,选择合适的量程至关重要。如果选择的量程太小,指针可能会超过
    的头像 发表于 01-23 09:32 ?1387次阅读

    指针式万用表与数字万用表对比

    万用表,其核心部件是一个指针刻度盘。当测量电路的电压、电流或电阻时,指针会根据测量值在刻度盘上移动到相应的位置。 优点 直观性 :
    的头像 发表于 01-23 09:31 ?1626次阅读

    指针式万用表读数技巧

    选择旋钮用于选择不同的测量范围,而插孔则用于连接测试线。表盘上标有刻度,用于读取测量值。 2. 选择合适的量程 在测量之前,选择合适的量程是至关重要的。如果量程选择不当,可能会导致测量结果不准确或者损坏万用表。通常,
    的头像 发表于 01-22 18:20 ?1532次阅读

    指针式万用表和数字万用表哪个好

    指针式万用表,也称为模拟万用表,其工作原理基于电流通过一个可移动的指针指针刻度盘上的位置表示测量值。这种万用表通常使用机械表头,指针
    的头像 发表于 01-22 17:28 ?3519次阅读

    指针式万用表使用指南

    ,它们通常不如数字万用表精确。 二、指针式万用表的基本构造 表头 :包含指针刻度盘,用于显示测量结果。 选择旋钮 :用于选择测量功能(电压、电流、电阻等)和量程。 表笔 :红色表笔(正极)和黑色表笔(负极),用于连
    的头像 发表于 01-22 17:25 ?1914次阅读

    指针式万用表测量精度比较

    指针式万用表的核心是一个可变电阻器(分压器)和一个可动的指针。当测量电压或电流时,通过分压器的电阻值会改变,从而改变通过指针的电流,使指针刻度
    的头像 发表于 01-22 17:23 ?976次阅读

    指针被释放后就变成了空指针

    ;} ? ? 这段代码大家看下有没有问题,能不能顺利运行? 前面三行都没有问题,指针 s 指向了一块堆内存,把字符串 helloworld 拷贝到堆内存,然后释放了 s。 问题就出在这,很多同学不理解,指针 s 被释放了
    的头像 发表于 01-22 09:23 ?423次阅读

    虹科免拆诊断 | 2017款凯迪拉克XT5车组合仪表上的指针均失灵

    2017款凯迪拉克XT5车组合仪表上的指针均失灵南京车翼博汽车维修服务有限责任公司梁建辉故障现象故障诊断故障排除一辆2017款凯迪拉克XT5车,搭载LTG发动机,累计行驶里程约为17.2万km。车主
    的头像 发表于 11-07 08:02 ?673次阅读
    虹科免拆诊断 | 2017款凯迪拉克XT5车组合<b class='flag-5'>仪表</b>上的<b class='flag-5'>指针</b>均失灵

    C语言指针运算符详解

    在C语言中,当你有一个指向数组某个元素的指针时,你可以对该指针执行某些算术运算,例如加法或减法。这些运算可以用来遍历数组的元素,如ptr[i]等价于*(ptr + i)。然而,如果
    的头像 发表于 10-30 11:16 ?830次阅读

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

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

    【龙芯2K0300蜂鸟板试用】5 搭建opencv开发环境

    在官方提供的buildroot根文件系统,不支持opencv库,故需要自己增加,另外,在本地编译的时候,需要在本地(ubuntu)上安装对应opencv库,这样才能将编译好的镜像放到板子上跑起来
    发表于 08-27 15:08

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

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