0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

opencv如何讀取儀表中的指針刻度

新機(jī)器視覺 ? 來源:機(jī)器學(xué)習(xí)AI算法工程 ? 作者:機(jī)器學(xué)習(xí)AI算法工 ? 2022-04-13 14:20 ? 次閱讀

最近遇到一個問題,如何讀取儀表中的指針指向的刻度

解決方法有多種,比如,方案一:模板匹配+邊緣檢測+霍夫直線檢測,方案二:神將網(wǎng)絡(luò)(CNN)目標(biāo)定位等,

其中CNN就有點(diǎn)麻煩了,需要一定數(shù)量的訓(xùn)練樣本,太麻煩,而方案一太普通,最后我采用了方案三,

方案三:模板匹配+k-means+直線擬合

具體做法如下:

首先說一下模板匹配,它是OpenCV自帶的一個算法,可以根據(jù)一個模板圖到目標(biāo)圖上去尋找對應(yīng)位置,如果模板找的比較好那么效果顯著,這里說一下尋找模板的技巧,模板一定要標(biāo)準(zhǔn)、精準(zhǔn)且特征明顯。

第一次的模板選取如下:

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

匹配的效果如下:

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

根據(jù)模板選取的原則我們,必須進(jìn)行兩次匹配才能的到精確和更高準(zhǔn)確率的結(jié)果

第二次的模板如下:

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

然后在第一次結(jié)果的的基礎(chǔ)上也就是藍(lán)色矩形框區(qū)域進(jìn)行第二次匹配,結(jié)果如下:

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

下面對上圖進(jìn)行k-means二值化,由于途中的陰影,所以只截取原圖的0.6(從中心)作為k-means聚類的樣本點(diǎn),然后將聚類結(jié)果應(yīng)用至上圖并重新二值化(聚類結(jié)果為2,求中值,根據(jù)中值二值化),同時只保留內(nèi)切圓部分,效果如下:

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

接下來就是擬合直線,擬合直線我采用旋轉(zhuǎn)虛擬直線法,假設(shè)一條直線從右邊0度位置順時針繞中心旋轉(zhuǎn)當(dāng)它轉(zhuǎn)到指針指向的位置時重合的最多,此時記錄下角度,最后根據(jù)角度計算刻度值。效果圖如下:

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

最后就讀取到了數(shù)值:

聚類結(jié)果:

[[31.99054054 23.04324324 14.89054054]

[62.69068323 53.56024845 40.05652174]]

重合數(shù)量和對應(yīng)角度:(1566, 158)

對應(yīng)刻度: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

審核編輯 :李倩

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4592

    瀏覽量

    92538
  • OpenCV

    關(guān)注

    29

    文章

    625

    瀏覽量

    41218
  • cnn
    cnn
    +關(guān)注

    關(guān)注

    3

    文章

    350

    瀏覽量

    22144

原文標(biāo)題:opencv如何讀取儀表中的指針刻度

文章出處:【微信號:vision263com,微信公眾號:新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    電流計指針偏轉(zhuǎn)方向是正極還是負(fù)極

    “0”刻度在中間,正極在右側(cè),負(fù)極在左側(cè)),當(dāng)電流從正極流入時,指針會向右偏轉(zhuǎn);當(dāng)電流從負(fù)極流入時,指針會向左偏轉(zhuǎn)。 簡而言之,電流從哪極流入,指針就往哪方向偏轉(zhuǎn)。 特殊情況 : 如果
    的頭像 發(fā)表于 09-19 15:18 ?1871次閱讀

    面試常考+1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應(yīng)用場景,對于提升嵌入式程序的效率和質(zhì)量至關(guān)重要。一、
    的頭像 發(fā)表于 08-10 08:11 ?640次閱讀
    面試???1:函數(shù)<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>函數(shù)、數(shù)組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數(shù)組

    OpenCV圖像識別C++代碼

    的頭文件 在您的C++代碼,包含以下必要的頭文件: # include # include # include # include # include # include # include 讀取圖像
    的頭像 發(fā)表于 07-16 10:42 ?1666次閱讀

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個開源的計算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?889次閱讀

    opencv的主要功能有哪些

    OpenCV提供了豐富的圖像處理功能,包括圖像的讀取、顯示、保存、轉(zhuǎn)換等。此外,OpenCV還支持圖像的濾波、邊緣檢測、形態(tài)學(xué)操作、圖像金字塔等高級圖像處理技術(shù)。 特征檢測與描述:OpenC
    的頭像 發(fā)表于 07-16 10:35 ?1257次閱讀

    Keil+C51對雙數(shù)據(jù)指針的直接利用

    Keil+C51對雙數(shù)據(jù)指針的直接利用
    發(fā)表于 06-18 10:15 ?0次下載

    三菱plc讀取485儀表程序案例教程

    ,實(shí)現(xiàn)自動化控制。其中,通過RS-485通信接口與485儀表進(jìn)行通信是一種常見的應(yīng)用場景。本文將詳細(xì)介紹如何使用三菱PLC讀取485儀表的程序案例,包括硬件連接、通信協(xié)議、程序編寫和調(diào)試等環(huán)節(jié)。 一、硬件連接 硬件設(shè)備 三菱PL
    的頭像 發(fā)表于 06-16 09:16 ?5007次閱讀

    ELF 1技術(shù)貼|如何在Ubuntu編譯OpenCV

    在之前發(fā)布的文章探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在Ubuntu環(huán)境下將OpenCV編譯為X86架構(gòu)可能更加方便和高效。通過在主機(jī)上編譯并使用X86架構(gòu)
    的頭像 發(fā)表于 05-31 16:41 ?1119次閱讀
    ELF 1技術(shù)貼|如何在Ubuntu<b class='flag-5'>中</b>編譯<b class='flag-5'>OpenCV</b>庫

    電子電工常用儀器儀表及設(shè)備,一口氣整理!

    在電子電工行業(yè),有一些基本的儀器儀表及設(shè)備是需要熟知的,這些儀器儀表及設(shè)備于日常工作至關(guān)重要。1指針式萬用表指針式萬用表使用機(jī)械指針
    的頭像 發(fā)表于 05-17 08:20 ?1066次閱讀
    電子電工常用儀器<b class='flag-5'>儀表</b>及設(shè)備,一口氣整理!

    指針式萬用表的使用方法

    在使用指針式萬用表之前,需要觀察萬用表的指針是否與零刻度線對齊和重合。如果不重合,就需要進(jìn)行調(diào)零操作,否則會影響讀數(shù),使測量結(jié)果不準(zhǔn)確。調(diào)零操作包括機(jī)械調(diào)零和歐姆調(diào)零。機(jī)械調(diào)零是通過調(diào)整表盤中間
    的頭像 發(fā)表于 05-09 18:23 ?1554次閱讀

    HDJZ-3E型便攜式交直流指示儀表檢定裝置基本概念與操作

    刻度刻度值的概念:在本裝置某點(diǎn)的刻度值指該點(diǎn)的被測物理量的標(biāo)度大小。要使被檢表的指針轉(zhuǎn)到該點(diǎn)時,理論上本裝置要輸出對應(yīng)大小的物理量。例如
    的頭像 發(fā)表于 04-11 09:18 ?254次閱讀
    HDJZ-3E型便攜式交直流指示<b class='flag-5'>儀表</b>檢定裝置基本概念與操作

    怎么理解指針指針?

    怎么理解指針指針?其實(shí)這個概念并不難,只是把它放到實(shí)際應(yīng)用,容易造成困擾。
    的頭像 發(fā)表于 02-23 16:46 ?1036次閱讀
    怎么理解<b class='flag-5'>指針</b>的<b class='flag-5'>指針</b>?

    使用OpenCV進(jìn)行儀表指針刻度的識別與讀取

    首先說一下模板匹配,它是OpenCV自帶的一個算法,可以根據(jù)一個模板圖到目標(biāo)圖上去尋找對應(yīng)位置,如果模板找的比較好那么效果顯著,這里說一下尋找模板的技巧,模板一定要標(biāo)準(zhǔn)、精準(zhǔn)且特征明顯。
    發(fā)表于 02-22 13:54 ?1738次閱讀
    使用<b class='flag-5'>OpenCV</b>進(jìn)行<b class='flag-5'>儀表</b><b class='flag-5'>指針</b><b class='flag-5'>刻度</b>的識別與<b class='flag-5'>讀取</b>

    指針萬用表讀數(shù)的方法

    電阻值讀數(shù):從電阻值刻度尺讀數(shù)。指針在15~20間,在這一大格,有5個小格是平均分配的,每小格為1,因此,指針指示為17。將17乘以電阻擋倍數(shù),如果旋鈕在R×100擋上,則該數(shù)值表示
    的頭像 發(fā)表于 12-14 13:30 ?6100次閱讀
    <b class='flag-5'>指針</b>萬用表讀數(shù)的方法

    指針是什么

    指針是什么? 1.1 淺談指針 理解指針的 兩個要點(diǎn): 指針是內(nèi)存中一個最小單元的編號,也就是地址; 平時口語說的
    的頭像 發(fā)表于 11-24 15:50 ?1957次閱讀
    <b class='flag-5'>指針</b>是什么