日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

【MaixPY 教程】用mixly玩转k210——条形码、二维码、AprilTag识别

發(fā)布時(shí)間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【MaixPY 教程】用mixly玩转k210——条形码、二维码、AprilTag识别 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【MaixPY 教程】用mixly玩轉(zhuǎn)k210——條形碼、二維碼、AprilTag識(shí)別


【MaixPy系列教程:】

  • 【MaixPy教程】用maixHub訓(xùn)練模型進(jìn)行開(kāi)源硬件識(shí)別
  • 【MaixPy 教程】用mixly玩轉(zhuǎn)K210——口罩識(shí)別
  • 【MaixPy教程】用mixly玩轉(zhuǎn)K210——調(diào)用AI_OneNET API實(shí)現(xiàn)車(chē)牌識(shí)別
  • 【MaixPy 教程】用mixly玩轉(zhuǎn)K210——人臉追蹤
  • 【MaixPy 教程】用mixly玩轉(zhuǎn)K210——20類(lèi)對(duì)象檢測(cè)
  • 【MaixPy 教程】用mixly玩轉(zhuǎn)K210——一鍵本地模型訓(xùn)練
  • 【MaixPY 教程】用mixly玩轉(zhuǎn)k210——MixNo通過(guò)TCP/IP與掌控板進(jìn)行通訊
  • 【MaixPY 教程】用mixly玩轉(zhuǎn)k210——條形碼、二維碼、AprilTag識(shí)別

前言

隨著科技的發(fā)展,移動(dòng)支付讓人們的生活變得越來(lái)越便捷,可是與之背后的原理我們又了解多少呢?那么今天就讓我?guī)ьI(lǐng)大家一起用milxy一起去實(shí)現(xiàn):條形碼、二維碼、AprilTag識(shí)別。

準(zhǔn)備階段

  • Maixduino
  • typec 數(shù)據(jù)線(xiàn)
  • 條形碼、二維碼、Apriltag碼若干

條形碼

1:什么是條形碼

條形碼(barcode)是將寬度不等的多個(gè)黑條和空白,按照一定的編碼規(guī)則排列,用以表達(dá)一組信息的圖形標(biāo)識(shí)符。常見(jiàn)的條形碼是由反射率相差很大的黑條(簡(jiǎn)稱(chēng)條)和白條(簡(jiǎn)稱(chēng)空)排成的平行線(xiàn)圖案。條形碼可以標(biāo)出物品的生產(chǎn)國(guó)、制造廠(chǎng)家、商品名稱(chēng)、生產(chǎn)日期、圖書(shū)分類(lèi)號(hào)、郵件起止地點(diǎn)、類(lèi)別、日期等許多信息,因而在商品流通、圖書(shū)管理、郵政管理、銀行系統(tǒng)等許多領(lǐng)域都得到廣泛的應(yīng)用

2:條形碼識(shí)別原理

條碼符號(hào)是由反射率不同的“條”、“空”按照一定的編碼規(guī)則組合起來(lái)的一種信息符號(hào)。由于條碼符號(hào)中“條”、“空”對(duì)光線(xiàn)具有不同的反射率,從而使條碼掃描器接受到強(qiáng)弱不同的反射光信號(hào),相應(yīng)地產(chǎn)生電位高低不同的電脈沖。而條碼符號(hào)中“條”、“空”的寬度則決定電位高低不同的電脈沖信號(hào)的長(zhǎng)短。掃描器接收到的光信號(hào)需要經(jīng)光電轉(zhuǎn)換成電信號(hào)并通過(guò)放大電路進(jìn)行放大。由于掃描光點(diǎn)具有一定的尺寸、條碼印刷時(shí)的邊緣模糊性以及一些其他原因,經(jīng)過(guò)電路放大的條碼電信號(hào)是一種平滑的起伏信號(hào),這種信號(hào)被稱(chēng)為“模擬電信號(hào)”?!澳M電信號(hào)”需經(jīng)整形變成通常的“數(shù)字信號(hào)”。根據(jù)碼制所對(duì)應(yīng)的編碼規(guī)則,譯碼器便可將“數(shù)字信號(hào)”識(shí)讀譯成數(shù)字、字符信息

3:BarCode類(lèi)

MaixPy固件中的內(nèi)置庫(kù)image庫(kù)內(nèi)置了BarCode類(lèi),專(zhuān)門(mén)用于識(shí)別條形碼。其中他的方法有:

方法名稱(chēng)功能
barcode.corners()返回一個(gè)由該對(duì)象的四個(gè)角組成的四個(gè)元組(x,y)的列表。四個(gè)角通常是按照從左上角開(kāi)始沿順時(shí)針順序返回的。
barcode.rect()返回一個(gè)矩形元組(x, y, w, h),用于如數(shù)據(jù)矩陣的邊界框的 image.draw_rectangle 等其他的 image 方法。
barcode.x()返回條形碼的邊界框的x坐標(biāo)(int)
barcode.y()返回條形碼的邊界框的y坐標(biāo)(int)。
barcode.w()返回條形碼的邊界框的w寬度(int)
barcode.h()返回條形碼的邊界框的h高度(int)。
barcode.payload()返回條形碼的有效載荷的字符串。例:數(shù)量。
barcode.type()返回條形碼的列舉類(lèi)型 (int)
barcode.rotation()返回以弧度計(jì)的條形碼的旋度(浮點(diǎn)數(shù))
barcode.quality()返回條形碼在圖像中被檢測(cè)到的次數(shù)(int)

mixly中也有相應(yīng)的條形碼識(shí)別積木塊在機(jī)器視覺(jué)中維碼識(shí)別中如下圖所示:

示例程序

import sensor import machine import imagesensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(10) while True:img = sensor.snapshot()code = img.find_barcodes([0,0,320,240])for i in code:code_text = i.payload()print(code_text)

實(shí)驗(yàn)結(jié)果:

二維碼

1:什么是二維碼

二維碼又稱(chēng)二維條碼,常見(jiàn)的二維碼為QR Code,QR全稱(chēng)Quick Response,是一個(gè)近幾年來(lái)移動(dòng)設(shè)備上超流行的一種編碼方式,它比傳統(tǒng)的Bar Code條形碼能存更多的信息,也能表示更多的數(shù)據(jù)類(lèi)型。

2:二維碼的分類(lèi)

二維碼,從字面上看就是用兩個(gè)維度(水平方向和垂直方向)來(lái)進(jìn)行數(shù)據(jù)的編碼,條形碼只利用了一個(gè)維度(水平方向)表示信息,在另一個(gè)維度(垂直方向)沒(méi)有意義,所以二維碼比條形碼有著更高的數(shù)據(jù)存儲(chǔ)容量。

從形成方式上,二維碼可以分為兩類(lèi),

1、堆疊式二維碼:在一維條形碼的基礎(chǔ)上,將多個(gè)條形碼堆積在一起進(jìn)行編碼,常見(jiàn)的編碼標(biāo)準(zhǔn)有PDF417等


2、矩陣式二維碼:在一個(gè)矩陣空間中通過(guò)黑色和白色的方塊進(jìn)行信息的表示,黑色的方塊表示1,白色的方塊表示0,相應(yīng)的組合表示了一系列的信息,常見(jiàn)的編碼標(biāo)準(zhǔn)有QR 碼,漢信碼等

PDF417由美國(guó)研發(fā),在美國(guó)地區(qū)使用廣泛 漢信碼由中國(guó)自主研發(fā),目前已在政府相關(guān)領(lǐng)域得到初步的使用。 QR碼由日本研發(fā),目前很多的應(yīng)用都是用QR碼進(jìn)行編碼,譯碼(目前使用最廣的是QR碼,所以接下來(lái)的內(nèi)容會(huì)對(duì)QR碼進(jìn)行講解)

3:二維碼的結(jié)構(gòu)

一個(gè)二維碼可以分為兩個(gè)部分,功能圖形和編碼區(qū)域

功能圖形起到定位的作用

名稱(chēng)作用
位置探測(cè)圖形由三個(gè)黑白相間的大正方形嵌套組成,分別位于二維碼左上角、右上角、左下角,目的是為了確定二維碼的大小和位置。
定位圖形由兩條黑白相間的直線(xiàn)組成,便于確定二維碼的角度,糾正扭曲。
校正圖形僅在版本2以上存在,由三個(gè)黑白相間的小正方形嵌套組成,便于確定中心,糾正扭曲。

數(shù)據(jù)區(qū)記錄了具體的數(shù)據(jù)信息,糾錯(cuò)信息與版本信息

名稱(chēng)作用
數(shù)據(jù)和糾錯(cuò)碼記錄了數(shù)據(jù)信息和相應(yīng)的糾錯(cuò)碼,糾錯(cuò)碼的存在使得當(dāng)二維碼的數(shù)據(jù)出現(xiàn)允許范圍內(nèi)的錯(cuò)誤時(shí),也可以正確解碼。
版本信息僅在版本7以上存在,記錄具體的版本信息。
格式信息記錄使用的掩碼和糾錯(cuò)等級(jí)。

此外二維碼的外圍還留有一圈空白區(qū),主要是為了便于識(shí)別而存在。

4:QRCode類(lèi)

MaixPy固件中的內(nèi)置庫(kù)image庫(kù)內(nèi)置了QRCode類(lèi),專(zhuān)門(mén)用于識(shí)別二位碼。其中它的方法有:

方法名稱(chēng)作用
qrcode.corners()返回一個(gè)由該對(duì)象的四個(gè)角組成的四個(gè)元組(x,y)的列表。四個(gè)角通常是按照從左上角開(kāi)始沿順時(shí)針順序返回的。
qrcode.rect()返回一個(gè)矩形元組(x, y, w, h),用于如二維碼的邊界框的 image.draw_rectangle 等其他的 image 方法。
qrcode.x()返回二維碼的邊界框的x坐標(biāo)(int)
qrcode.y()返回二維碼的邊界框的y坐標(biāo)(int)。
qrcode.w()返回二維碼的邊界框的w坐標(biāo)(int)。
qrcode.h()返回二維碼的邊界框的h坐標(biāo)(int)。
qrcode.payload()返回二維碼有效載荷的字符串,例如URL 。
qrcode.version()返回二維碼的版本號(hào)(int)。
qrcode.ecc_level()返回二維碼的ECC水平(int)。
qrcode.data_type()返回二維碼的數(shù)據(jù)類(lèi)型。
qrcode.eci()返回二維碼的ECI。ECI儲(chǔ)存了QR碼中存儲(chǔ)數(shù)據(jù)字節(jié)的編碼。若您想要處理包含超過(guò)標(biāo)準(zhǔn)ASCII文本的二維碼,您需要查看這一數(shù)值。
qrcode.is_numeric()若二維碼的數(shù)據(jù)類(lèi)型為數(shù)字式,則返回True
qrcode.is_alphanumeric()若二維碼的數(shù)據(jù)類(lèi)型為文字?jǐn)?shù)字式,則返回True。
qrcode.is_binary()若二維碼的數(shù)據(jù)類(lèi)型為二進(jìn)制式,則返回True
qrcode.is_kanji()若二維碼的數(shù)據(jù)類(lèi)型為日本漢字,則返回True

mixly中也有相應(yīng)的條形碼識(shí)別積木塊在機(jī)器視覺(jué)中維碼識(shí)別中如下圖所示:

示例程序


程序代碼

import sensor import machine import imagesensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(10) sensor.set_hmirror(0) while True:img = sensor.snapshot()code = img.find_qrcodes([0,0,320,240])for i in code:code_text = i.payload()print(code_text)

實(shí)驗(yàn)結(jié)果:
可以用草料二維碼生成器在線(xiàn)生成我們想要的內(nèi)容。

AprilTag

1:什么是AprilTag?

AprilTags是基準(zhǔn)標(biāo)記的一種流行形式。它在機(jī)器人技術(shù)中具有廣泛的應(yīng)用,包括對(duì)象跟蹤,視覺(jué)定位,SLAM準(zhǔn)確性評(píng)估和人機(jī)交互。Isaac通過(guò)利用GPU加速同時(shí)實(shí)現(xiàn)高解碼魯棒性來(lái)提供實(shí)時(shí)AprilTag檢測(cè)。

2:和條形碼二維碼的區(qū)別

AprilTag標(biāo)記在機(jī)器視覺(jué)中顯得比條形碼、二維碼更加有用,因?yàn)樗軌蛲ㄟ^(guò)AprilTag檢測(cè)程序可以計(jì)算相對(duì)于相機(jī)的精確3D位置,方向和id;真實(shí)世界中的3D位置對(duì)于機(jī)器來(lái)說(shuō)非常有用!AprilTag常用于各種任務(wù),包括AR,機(jī)器人和相機(jī)校準(zhǔn)。

3:Apriltag生成

MaixPy IDE 中在工具-》機(jī)器視覺(jué)選擇中有不同碼的生成如下圖

如果用的老師用二哈覺(jué)得官方給的標(biāo)簽可以用這個(gè)生成哦。

4:AprilTag類(lèi)

方法名稱(chēng)作用
apriltag.corners()返回一個(gè)由該對(duì)象的四個(gè)角組成的四個(gè)元組(x,y)的列表。
apriltag.rect()返回一個(gè)矩形元組(x, y, w, h),用于如AprilTag邊界框的 image.draw_rectangle 等其他的 image 方法
apriltag.x()返回AprilTag邊界框的x坐標(biāo)(int)。
apriltag.y()返回AprilTag邊界框的y坐標(biāo)(int)。
apriltag.w()返回AprilTag邊界框的w坐標(biāo)(int)。
apriltag.h()返回AprilTag邊界框的h坐標(biāo)(int)。
apriltag.id()返回AprilTag的數(shù)字ID。
apriltag.family()返回AprilTag的數(shù)字家庭。
apriltag.cx()返回AprilTag的中心x位置(int)。
apriltag.cy()返回AprilTag的中心y位置(int)。
apriltag.rotation()返回以弧度計(jì)的AprilTag的旋度(int)。
apriltag.decision_margin()返回AprilTag匹配的色飽和度(取值0.0 - 1.0),其中1.0為最佳。
apriltag.hamming()返回AprilTag的可接受的數(shù)位誤差數(shù)值。
apriltag.goodness()返回AprilTag圖像的色飽和度(取值0.0 - 1.0),其中1.0為最佳。
apriltag.x_translation()返回距離攝像機(jī)x方向的變換,距離的單位未知。
apriltag.y_translation()返回距離攝像機(jī)y方向的變換,距離的單位未知。
apriltag.z_translation()返回距離攝像機(jī)z方向的變換,距離的單位未知。
apriltag.x_rotation()返回以弧度計(jì)的AprilTag在X平面上的旋度。例:目視AprilTag,從左至右移動(dòng)攝像頭。
apriltag.y_rotation()返回以弧度計(jì)的AprilTag在Y平面上的旋度。例:目視AprilTag,從上至下移動(dòng)攝像頭。
apriltag.z_rotation()返回以弧度計(jì)的AprilTag在Z平面上的旋度。例:目視AprilTag,旋轉(zhuǎn)攝像頭。

mixly中也有相應(yīng)的AprilTag識(shí)別積木塊在機(jī)器視覺(jué)中維碼識(shí)別中如下圖所示:

示例程序


考慮到識(shí)別性能問(wèn)題,我們應(yīng)該設(shè)計(jì)攝像頭的幀大小為:160120,同樣ArilTag識(shí)別圖像區(qū)域同樣為:0,0,160,120*
程序代碼

import sensor import machine import imagesensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QQVGA) sensor.run(1) sensor.skip_frames(10) sensor.set_hmirror(0) while True:img = sensor.snapshot()code = img.find_apriltags([0,0,160,120])for i in code:code_text = i.id()print(code_text)

實(shí)驗(yàn)結(jié)果:

總結(jié)

通過(guò)本次的教程,想必大家都對(duì)標(biāo)簽識(shí)別都有了一定的了解了吧,應(yīng)用功能請(qǐng)參考下一篇:標(biāo)簽識(shí)別音樂(lè)播放器。敬請(qǐng)期待!!更多教程歡迎訪(fǎng)問(wèn)個(gè)人博客:www.hockel.club 有問(wèn)題的可以加入【MixNo QQ群:1056344043】

總結(jié)

以上是生活随笔為你收集整理的【MaixPY 教程】用mixly玩转k210——条形码、二维码、AprilTag识别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。