一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于 OpenCV 的氣體泵掃描儀數(shù)字識(shí)別系統(tǒng)

電子設(shè)計(jì) ? 來源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2020-12-14 23:12 ? 次閱讀
來源:小白學(xué)視覺
作者:努比


綜述

2012年iOS應(yīng)用商店中發(fā)布了一個(gè)名為FuelMate的Gas跟蹤應(yīng)用。小伙伴們可以使用該應(yīng)用程序跟蹤汽油行駛里程,以及有一些有趣的功能,例如Apple Watch應(yīng)用程序、vin.li集成以及基于趨勢(shì)mpg的視覺效果。

燃料伴侶

對(duì)此我們有一個(gè)新想法,該如何添加一個(gè)功能幫助我們?cè)诒弥袙呙枞加停⒃趹?yīng)用程序中輸入燃油信息?讓我們深入研究如何實(shí)現(xiàn)這一目標(biāo)。

技術(shù)

對(duì)于這個(gè)項(xiàng)目的我們首先應(yīng)該編寫一個(gè)簡(jiǎn)單的Python應(yīng)用程序以拍攝汽油泵的圖像,然后嘗試從中讀取數(shù)字。OpenCV是用于計(jì)算機(jī)視覺應(yīng)用程序的流行的跨平臺(tái)庫。它包括各種圖像處理實(shí)用程序以及某些機(jī)器學(xué)習(xí)功能。除此之外我們希望可以先使用Python對(duì)其進(jìn)行原型設(shè)計(jì),然后將處理代碼轉(zhuǎn)換為C ++以在iOS應(yīng)用程序上運(yùn)行。

目標(biāo)

我們首先要考慮以下兩個(gè)問題:

1.我們可以從圖像中分離出數(shù)字嗎?

2.我們可以確定圖像代表哪個(gè)數(shù)字嗎?

數(shù)字分割

如何確定圖像中的數(shù)字有多種方法,但是我提出了使用簡(jiǎn)單的圖像閾值法來嘗試查找數(shù)字的方法。

圖像閾值化的基本思想是將圖像轉(zhuǎn)換為灰度,然后說灰度值小于某個(gè)常數(shù)的任何像素,則該像素為一個(gè)值,否則為另一個(gè)。最后,您得到的二進(jìn)制圖像只有兩種顏色,在大多數(shù)情況下只是黑白圖像。

這個(gè)概念在OCR應(yīng)用中非常有效,但是主要問題是決定對(duì)該閾值使用什么。我們可以選擇一些常量,也可以使用OpenCV選擇其他一些選項(xiàng)。我們可以使用自適應(yīng)閾值而不是使用常數(shù),這將使用圖像的較小部分并確定要使用的不同閾值。這在具有不同照明情況的應(yīng)用中特別有用,特別是在掃描氣泵中。

將圖像設(shè)置為閾值后,可以使用OpenCV的findContours方法查找圖像中連接了白色像素部分的區(qū)域。繪制輪廓后,便可以裁剪出這些區(qū)域并確定它們是否可能是數(shù)字以及它是什么數(shù)字。

基本圖像處理流程

這是我在測(cè)試圖像處理中使用的原始圖像。它有一些眩光點(diǎn),但是圖像相當(dāng)干凈。讓我們逐步完成獲取此源圖像的過程,并嘗試將其分解為單個(gè)數(shù)字。


原始圖片

影像準(zhǔn)備

在開始圖像處理流程之前,我們決定先調(diào)整一些圖像屬性,然后再繼續(xù)。這有點(diǎn)試驗(yàn)和錯(cuò)誤,但注意到,當(dāng)我們調(diào)整圖像的曝光度時(shí),可以獲得更好的結(jié)果。下面是使用Python調(diào)整后的圖像,相當(dāng)于曝光(阿爾法)的圖像cv::Mat::convertTo這是剛剛在圖像墊乘法操作cv2.multiply(some/_img, np.array([some/_alpha]),


調(diào)整曝光

灰階

將圖像轉(zhuǎn)換為灰度。

轉(zhuǎn)換為灰度

模糊

模糊圖像以減少噪點(diǎn)。我們嘗試了許多不同的模糊選項(xiàng),但僅用輕微的模糊就找到了最佳結(jié)果。

稍微模糊

閾值圖像轉(zhuǎn)換為黑白圖像

在下圖中,使用cv2.adaptiveThreshold帶有cv2.ADAPTIVE/_THRES/_GAUSSIAN/_C選項(xiàng)的方法。此方法采用兩個(gè)參數(shù),塊大小和要調(diào)整的常數(shù)。確定這兩者需要一些試驗(yàn)和錯(cuò)誤,更多有關(guān)優(yōu)化部分的內(nèi)容。

閾值為黑/白

填補(bǔ)空白

由于大多數(shù)燃油泵都使用某種7段LCD顯示屏,因此數(shù)字中存在一些細(xì)微的間隙,無法使用輪廓繪制方法,因此我們需要使這些段看起來相連。在這種情況下,我們將轉(zhuǎn)到erode圖像來彌補(bǔ)這些差距。由于大家可能希望使用,所以這似乎向后看,dilate但是這些方法通常適用于圖像的白色部分。在我們的案例中,我們正在“侵蝕”白色背景以使數(shù)字看起來更大。

反轉(zhuǎn)圖像

在嘗試在圖像中查找輪廓之前,我們需要反轉(zhuǎn)顏色,因?yàn)樵揻indContours方法將找到白色的連接部分,而當(dāng)前的數(shù)字是黑色。


顏色反轉(zhuǎn)

在圖像上找到輪廓

下圖顯示了我們的原始圖像,該圖像在上圖的每個(gè)輪廓上都有包圍框。大家可以看到它找到了數(shù)字,但也找到了一堆不是數(shù)字的東西,因此我們需要將它們過濾掉。

輪廓過濾

1.現(xiàn)在我們有了許多輪廓,我們需要找出我們關(guān)心的輪廓。瀏覽了一堆氣泵的顯示和場(chǎng)景后,使用一套適用于輪廓的快速規(guī)則。

2.收集所有我們將分類為潛在小數(shù)的正方形輪廓。

3.扔掉任何不是正方形或高矩形的東西。

4.使輪廓與某些長(zhǎng)寬比匹配。LCD顯示屏中的十個(gè)數(shù)字中有九個(gè)數(shù)字的長(zhǎng)寬比類似于下面的藍(lán)色框高光之一。該規(guī)則的例外是數(shù)字“ 1”,其長(zhǎng)寬比略有不同。通過使用一些樣本輪廓,我將0–9!1方面確定為0.6,將1方面確定為0.3。它將使用這些比率和+/-緩沖區(qū)來確定輪廓是否是我們想要的東西,并收集這些輪廓。

5.對(duì)潛在數(shù)字應(yīng)用一組附加規(guī)則,在這里我們將確定輪廓邊界是否偏離所有其他潛在數(shù)字的平均高度或垂直位置。由于數(shù)字的大小應(yīng)相同,并且在相同的Y上對(duì)齊,因此我們可以丟棄它認(rèn)為是數(shù)字的任何輪廓,但不能像其他輪廓那樣將其對(duì)齊和調(diào)整大小。

預(yù)測(cè)

有兩個(gè)等高線輪廓,一個(gè)帶潛在位數(shù),一個(gè)帶潛在小數(shù)位,我們可以使用這些輪廓邊界裁剪圖像,并將其輸入經(jīng)過訓(xùn)練的系統(tǒng)中以預(yù)測(cè)其值。有關(guān)此過程的更多信息,請(qǐng)參見“數(shù)字培訓(xùn)”部分。

查找小數(shù)

在圖像中查找小數(shù)點(diǎn)是要解決的另一個(gè)問題。由于它很小,有時(shí)會(huì)連接到它旁邊的手指,因此使用我們?cè)谑种干鲜褂玫姆椒▉泶_定它似乎有問題。當(dāng)我們過濾輪廓時(shí),我們收集了可能是十進(jìn)制的正方形輪廓。從上一步獲得經(jīng)過驗(yàn)證的數(shù)字輪廓之后,我們將找到數(shù)字的最左x位置和最右x位置,以確定我們期望的小數(shù)位數(shù)。然后,我們將遍歷那些潛在的小數(shù),確定它是否在該空間以及該空間的下半部分,并將其分類為小數(shù)。找到小數(shù)點(diǎn)后,我們可以將其插入到我們上面預(yù)測(cè)的數(shù)字字符串中。

數(shù)字培訓(xùn)

在機(jī)器學(xué)習(xí)的世界中,解決OCR問題是一個(gè)分類問題。我們建立了一組訓(xùn)練有素的數(shù)據(jù),例如圖像處理中的數(shù)字,將它們分類為某種東西,然后使用該數(shù)據(jù)來匹配任何新圖像。一旦基本的圖像隔離功能開始工作,我就創(chuàng)建了一個(gè)腳本,該腳本可以遍歷圖像文件夾,運(yùn)行數(shù)字隔離代碼,然后將裁剪的數(shù)字保存到新文件夾中供我查看。運(yùn)行完之后,我會(huì)有一個(gè)未經(jīng)訓(xùn)練的數(shù)字文件夾,然后可以用來訓(xùn)練系統(tǒng)。


由于OpenCV已經(jīng)包含了k近鄰(k-NN)實(shí)現(xiàn),因此無需引入任何其他庫。為了進(jìn)行訓(xùn)練,我們?yōu)g覽了數(shù)字作物的文件夾,然后將其放入標(biāo)有0–9的新文件夾中,因此每個(gè)文件夾中都有一個(gè)數(shù)字的不同版本的集合。我們沒有大量的這些圖像,但是有足夠的證據(jù)來證明這是可行的。由于這些數(shù)字是相當(dāng)標(biāo)準(zhǔn)的,我認(rèn)為我不需要大量訓(xùn)練有素的圖像就可以相當(dāng)準(zhǔn)確。

k-NN工作原理的基礎(chǔ)是,我們將以黑白方式加載每個(gè)圖像,將該圖像存儲(chǔ)在每個(gè)像素處于打開或關(guān)閉狀態(tài)的數(shù)組中,然后將這些打開/關(guān)閉像素與特定的數(shù)字相關(guān)聯(lián)。然后,當(dāng)我們要預(yù)測(cè)一個(gè)新圖像時(shí),它將找出哪個(gè)訓(xùn)練圖像與這些像素最匹配,然后向我們返回最接近的值。

整理好數(shù)字后,將創(chuàng)建一個(gè)新的腳本,該腳本將遍歷這些文件夾,獲取每個(gè)圖像并將該圖像與數(shù)字關(guān)聯(lián)。到目前為止,在大多數(shù)代碼中,一般的圖像處理概念在Python和C ++中都應(yīng)用相同,但是在這里會(huì)有細(xì)微的差別。

在大多數(shù)此類應(yīng)用程序的Python示例中,分類被寫入兩個(gè)文件,一個(gè)包含分類,另一個(gè)包含該分類的圖像內(nèi)容。通常使用NumPy和標(biāo)準(zhǔn)文本文件完成此操作。但是,由于我想在iOS應(yīng)用程序上重用該系統(tǒng),因此我需要想出一種可以擁有跨平臺(tái)分類文件的方式。當(dāng)時(shí),我什么都找不到,因此最終編寫了一個(gè)快速實(shí)用程序,該實(shí)用程序?qū)腜ython中獲取分類數(shù)據(jù)并將其序列化為JSON文件,我可以在OpenCV的FileStorage系統(tǒng)的C ++端使用它。這不漂亮,但是我寫了一個(gè)簡(jiǎn)單的MatPython中的序列化方法,它將為OpenCV創(chuàng)建合適的結(jié)構(gòu)以在iOS端讀取?,F(xiàn)在,當(dāng)我訓(xùn)練數(shù)字時(shí),我將獲得NumPy文件供我的Python測(cè)試使用,然后獲取一個(gè)JSON文檔,我可以將其拖到我的iOS應(yīng)用程序中。您可以在此處看到該代碼。

優(yōu)化

一旦確定了數(shù)字隔離和預(yù)測(cè)的兩個(gè)目標(biāo),就需要對(duì)算法進(jìn)行優(yōu)化,以預(yù)測(cè)泵的新圖像上的數(shù)字。

在優(yōu)化的初始階段,創(chuàng)建了一個(gè)簡(jiǎn)單的Playground應(yīng)用程序,其中使用了OpenCV提供的一些簡(jiǎn)單的UI組件。使用這些組件,可以創(chuàng)建一些簡(jiǎn)單的軌跡欄,以左右滑動(dòng)并更改不同的值并重新處理圖像。圍繞該cv2.imshow方法創(chuàng)建了一個(gè)小包裝程序,該方法可以平鋪顯示的窗口,因?yàn)槲矣憛捒偸侵匦路胖盟鼈儯?br />
嘗試不同的變量

我們可以加載不同的圖像,并在圖像處理中嘗試變量的不同變化,并確定最佳的組合。

自動(dòng)化

在每個(gè)圖像上測(cè)試不同的變量是上手的好方法,但是我們想要一種更好的方法來驗(yàn)證是否更改了一個(gè)圖像的變量是否會(huì)對(duì)其他任何圖像產(chǎn)生影響。為此,我們想出了針對(duì)這些圖像進(jìn)行一些自動(dòng)化測(cè)試的系統(tǒng)。

我拍攝了每個(gè)測(cè)試圖像,并將它們放在文件夾中。然后,我用圖像中期望的數(shù)字來命名每個(gè)文件,并用小數(shù)點(diǎn)“ A”表示。應(yīng)用程序可以加載該目錄中的每個(gè)圖像并預(yù)測(cè)數(shù)字,然后將其與文件名中的數(shù)字進(jìn)行比較以確定是否匹配。這使我們可以針對(duì)所有不同的圖像快速嘗試更改。

自動(dòng)測(cè)試輸出

更進(jìn)一步,我創(chuàng)建了此腳本的不同版本,該腳本將嘗試對(duì)這組圖像進(jìn)行模糊,閾值等變量的幾乎每種組合,并找出最優(yōu)化的變量集將具有最佳的性能。準(zhǔn)確性。該腳本在計(jì)算機(jī)上花費(fèi)了相當(dāng)長(zhǎng)的時(shí)間才能運(yùn)行,大約需要7個(gè)小時(shí),但是最后提出了一組不同的變量,這些變量在我們手動(dòng)測(cè)試時(shí)找不到。

結(jié)論

這是否是任何人實(shí)際上都會(huì)使用的功能尚待確定,但這在實(shí)現(xiàn)某些機(jī)器學(xué)習(xí)概念和使用OpenCV方面是一個(gè)有趣的練習(xí)。到目前為止,在我們的測(cè)試中,應(yīng)用程序最大的問題是泵顯示屏上的眩光。根據(jù)泵上的照明和手機(jī)的角度,可能會(huì)導(dǎo)致某些掃描失效。

代碼鏈接:https://github.com/kazmiekr/G...

聲明:轉(zhuǎn)載請(qǐng)說明出處
推薦專欄文章

審核編輯:符乾江

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

    關(guān)注

    1804

    文章

    48477

    瀏覽量

    245187
  • 數(shù)字識(shí)別
    +關(guān)注

    關(guān)注

    2

    文章

    19

    瀏覽量

    10212
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    遠(yuǎn)程輸入輸出掃描儀說明

    電子發(fā)燒友網(wǎng)站提供《遠(yuǎn)程輸入輸出掃描儀說明.pdf》資料免費(fèi)下載
    發(fā)表于 03-26 15:06 ?0次下載

    岸橋箱號(hào)識(shí)別系統(tǒng)的工作原理 #人工智能 #識(shí)別系統(tǒng)

    識(shí)別系統(tǒng)
    jf_60141436
    發(fā)布于 :2025年03月24日 09:28:11

    微軟已修復(fù)掃描儀USB連接問題

    微軟對(duì)其支持文檔予以更新,并宣告已將 Windows 11 版本 24H2 中的掃描儀 USB 連接問題處理好。 在此之前,Windows 11 24H2 的 eSCL 協(xié)議出現(xiàn)了故障,設(shè)備在需要
    的頭像 發(fā)表于 12-12 16:55 ?694次閱讀

    國(guó)產(chǎn)純硅振蕩器替換SITime用于三維掃描儀

    國(guó)產(chǎn)純硅振蕩器替換SITime用于三維掃描儀
    的頭像 發(fā)表于 12-04 10:18 ?404次閱讀
    國(guó)產(chǎn)純硅振蕩器替換SITime用于三維<b class='flag-5'>掃描儀</b>中

    如何將三維激光掃描儀與BIM結(jié)合使用

    將三維激光掃描儀與BIM(建筑信息模型)結(jié)合使用,可以充分發(fā)揮兩者的優(yōu)勢(shì),提高工程測(cè)量的精度和效率。以下是將三維激光掃描儀與BIM結(jié)合使用的具體步驟和注意事項(xiàng): 一、前期準(zhǔn)備 確定掃描目標(biāo) : 明確
    的頭像 發(fā)表于 11-28 10:18 ?877次閱讀

    三維激光掃描儀與無人機(jī)結(jié)合的應(yīng)用

    三維激光掃描儀與無人機(jī)結(jié)合的應(yīng)用為多個(gè)領(lǐng)域帶來了革命性的變化。以下是對(duì)這種結(jié)合應(yīng)用的具體分析: 一、應(yīng)用概述 三維激光掃描儀與無人機(jī)技術(shù)的結(jié)合,通過無人機(jī)搭載三維激光掃描儀進(jìn)行空中作業(yè),能夠
    的頭像 發(fā)表于 11-28 10:10 ?1673次閱讀

    三維激光掃描儀使用技巧 三維激光掃描儀測(cè)量精度分析

    三維激光掃描儀使用技巧 三維激光掃描儀的使用技巧涵蓋了多個(gè)方面,旨在確保掃描過程的準(zhǔn)確性和高效性。以下是一些關(guān)鍵的使用技巧: 穩(wěn)定操作環(huán)境 :確保掃描過程中有一個(gè)穩(wěn)定的操作環(huán)境,避免震
    的頭像 發(fā)表于 11-28 10:07 ?1094次閱讀

    三維激光掃描儀應(yīng)用領(lǐng)域 三維激光掃描儀與傳統(tǒng)測(cè)量工具比較

    三維激光掃描儀應(yīng)用領(lǐng)域 三維激光掃描儀因其高精度、高效率和非接觸式的測(cè)量方式,在多個(gè)領(lǐng)域得到了廣泛應(yīng)用: 測(cè)繪領(lǐng)域 :用于地形、公路鐵路、河道及建筑基地的測(cè)繪,提供精確的空間數(shù)據(jù)。 工業(yè)測(cè)量 :在
    的頭像 發(fā)表于 11-28 10:04 ?1060次閱讀

    大幅掃描儀掃描地圖怎么操作

    1. 準(zhǔn)備掃描儀和地圖 在開始掃描之前,確保您的大幅掃描儀已經(jīng)安裝并正確配置。您可能需要安裝特定的驅(qū)動(dòng)程序或軟件,以便掃描儀能夠與您的計(jì)算機(jī)通信。 檢查
    的頭像 發(fā)表于 10-14 15:47 ?1475次閱讀

    蔡司激光三維掃描儀有效掃描金屬材料

    蔡司激光三維掃描儀因其高精度和多功能性,在工業(yè)檢測(cè)、逆向工程、質(zhì)量控制等領(lǐng)域得到了廣泛應(yīng)用。對(duì)于金屬材料的掃描,用戶常常關(guān)心的是ZEISS激光三維掃描儀是否能夠有效地完成這項(xiàng)任務(wù)。本文蔡司代理-三本
    的頭像 發(fā)表于 09-26 15:08 ?717次閱讀
    蔡司激光三維<b class='flag-5'>掃描儀</b>有效<b class='flag-5'>掃描</b>金屬材料

    何為電磁干擾(EMI)掃描儀,哪里需要它?

    什么是電磁干擾掃描儀?電磁干擾掃描儀(Electromagneticinterferencescanner)又稱EMI掃描儀,是屬于電磁兼容(EMC)測(cè)所試設(shè)備,具備干擾頻譜分析、定頻干擾成像功能
    的頭像 發(fā)表于 08-30 13:02 ?730次閱讀
    何為電磁干擾(EMI)<b class='flag-5'>掃描儀</b>,哪里需要它?

    如何選擇電磁干擾(EMI)掃描儀,看看這幾點(diǎn)

    在上期講完了電磁干擾(EMI)掃描儀的定義和應(yīng)用以后,我們應(yīng)該如何去選擇一款合適的電磁干擾(EMI)掃描儀?在當(dāng)今復(fù)雜的電子設(shè)備環(huán)境中,選擇合適的電磁干擾(EMI)掃描儀對(duì)于確保產(chǎn)品質(zhì)量、符合標(biāo)準(zhǔn)
    的頭像 發(fā)表于 08-30 13:02 ?873次閱讀
    如何選擇電磁干擾(EMI)<b class='flag-5'>掃描儀</b>,看看這幾點(diǎn)

    lidar激光雷達(dá)掃描儀有什么用

    于各個(gè)領(lǐng)域。 LiDAR激光雷達(dá)掃描儀的基本原理 LiDAR激光雷達(dá)掃描儀通過發(fā)射激光脈沖并接收反射回來的激光信號(hào),來測(cè)量物體與掃描儀之間的距離。激光雷達(dá)掃描儀通常包括激光發(fā)射器、接收
    的頭像 發(fā)表于 08-29 16:58 ?1581次閱讀

    基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì)

    基于OpenCV的人臉識(shí)別系統(tǒng)是一個(gè)復(fù)雜但功能強(qiáng)大的系統(tǒng),廣泛應(yīng)用于安全監(jiān)控、人機(jī)交互、智能家居等多個(gè)領(lǐng)域。下面將詳細(xì)介紹基于OpenCV的人臉識(shí)別
    的頭像 發(fā)表于 07-11 15:37 ?2.1w次閱讀

    工業(yè)級(jí)gom三維掃描儀的工作原理

    工業(yè)級(jí)gom三維掃描儀(如ATOS系列)的檢測(cè)原理主要基于結(jié)構(gòu)光掃描技術(shù)(StructuredLightScanning)和光學(xué)三角測(cè)量原理。以下是其基本的檢測(cè)原理:1.結(jié)構(gòu)光投射:掃描儀首先通過
    的頭像 發(fā)表于 05-14 16:45 ?1460次閱讀
    工業(yè)級(jí)gom三維<b class='flag-5'>掃描儀</b>的工作原理