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

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

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

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

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

最近遇到一個(gè)問(wèn)題,如何讀取儀表中的指針指向的刻度

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

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

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

具體做法如下:

首先說(shuō)一下模板匹配,它是OpenCV自帶的一個(gè)算法,可以根據(jù)一個(gè)模板圖到目標(biāo)圖上去尋找對(duì)應(yīng)位置,如果模板找的比較好那么效果顯著,這里說(shuō)一下尋找模板的技巧,模板一定要標(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

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

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

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

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

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

聚類結(jié)果:

[[31.99054054 23.04324324 14.89054054]

[62.69068323 53.56024845 40.05652174]]

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

對(duì)應(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)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4624

    瀏覽量

    93110
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

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

    關(guān)注

    3

    文章

    353

    瀏覽量

    22266

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

    面試???1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開(kāi)發(fā)領(lǐng)域,函數(shù)指針、指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它們的特性和應(yīng)用場(chǎng)景,對(duì)于提升嵌入式程序的效率和質(zhì)量至關(guān)重要。一、
    的頭像 發(fā)表于 08-10 08:11 ?943次閱讀
    面試???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圖像識(shí)別C++代碼

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

    opencv-python和opencv一樣嗎

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

    opencv的主要功能有哪些

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

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

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

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

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

    嵌入式學(xué)習(xí)-飛凌ElfBoard ELF 1板卡 - 如何在Ubuntu編譯OpenCV庫(kù)

    在之前發(fā)布的文章探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在 Ubuntu 環(huán)境下將 OpenCV 編譯為 X86 架構(gòu)可能更加方便和高效。 通過(guò)在主機(jī)上編譯并
    發(fā)表于 06-07 09:21

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

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

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

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

    指針式萬(wàn)用表的使用方法

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

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

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

    指針萬(wàn)用表如何測(cè)電容好壞?

    指針萬(wàn)用表由表頭、測(cè)量電路及轉(zhuǎn)換開(kāi)關(guān)等三個(gè)主要部分組成。它采用平均值式儀表,讀數(shù)直觀、形象,因?yàn)樽x數(shù)值與指針擺動(dòng)角度密切相關(guān)。
    的頭像 發(fā)表于 03-07 16:48 ?2565次閱讀

    怎么理解指針指針?

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

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

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