- Prasības
- OpenCV instalēšana Raspberry Pi
- Citu nepieciešamo pakotņu instalēšana
- Raspberry pi QR kodu lasītāja aparatūras iestatīšana
- Python kods Raspberry Pi QR kodu lasītājam
- Raspberry Pi QR kodu skenera pārbaude
QR kods (ātrās atbildes kods) ir matricas svītrkods, kas satur informāciju par objektu, kuram tas ir pievienots, piemēram, atrašanās vietas datus, identifikatoru vai izsekotāju, kas identificē vietni vai lietotni utt. Tas ir mašīnā lasāms optiskais etiķete, kas ir 2D attēla formā un kurai ir atšķirīgs raksts. Lai uzzinātu vairāk par QR kodiem un kā izveidot QR kodu, izpildiet mūsu iepriekšējo apmācību.
Šajā apmācībā mēs izveidosim Raspberry Pi balstītu QR kodu skeneri, izmantojot OpenCV un ZBar bibliotēku. ZBar ir labākā bibliotēka dažāda veida svītrkodu un QR kodu noteikšanai un dekodēšanai. OpenCV tiek izmantots, lai greifers jaunu kadru no video straumes un to apstrādātu. Kad OpenCV uzņem rāmi, tad mēs to varam nodot specializētai Python svītrkodu dekodēšanas bibliotēkai, piemēram, ZBar, kas atšifrē svītru kodu un pārveido to attiecīgajā informācijā.
Prasības
- Raspberry Pi 3 (jebkura versija)
- Pi kameras modulis
Pirms turpināt darbu ar šo Raspberry Pi 3 QR kodu skeneri, vispirms mums jāinstalē OpenCV, svītrkodu dekodēšanas bibliotēka ZBar, imutils un dažas citas atkarības no šī projekta. Digitālo attēlu apstrādei šeit tiek izmantots OpenCV. Visizplatītākās digitālās attēlu apstrādes programmas ir objektu noteikšana, sejas atpazīšana un cilvēku skaitītājs.
OpenCV instalēšana Raspberry Pi
Šeit OpenCV bibliotēka tiks izmantota Raspberry Pi QR skenerim. Lai instalētu OpenCV, vispirms atjauniniet Raspberry Pi.
sudo apt-get atjauninājums
Pēc tam instalējiet nepieciešamās atkarības OpenCV instalēšanai savā Raspberry Pi.
sudo apt-get install libhdf5-dev -y sudo apt-get install libhdf5-serial-dev –y sudo apt-get install libatlas-base-dev –y sudo apt-get install libjasper-dev -y sudo apt-get install libqtgui4 –Y sudo apt-get install libqt4-test –y
Pēc tam instalējiet OpenCV Raspberry Pi, izmantojot zemāk esošo komandu.
pip3 instalēt opencv-contrib-python == 4.1.0.25
Iepriekš mēs izmantojām OpenCV ar Raspberry pi un izveidojām tajā daudz apmācību.
- OpenCV instalēšana Raspberry Pi, izmantojot CMake
- Reāllaika sejas atpazīšana ar Raspberry Pi un OpenCV
- Valsts numura pazīšana, izmantojot Raspberry Pi un OpenCV
- Pūļa lieluma novērtēšana, izmantojot OpenCV un Raspberry Pi
Mēs esam izveidojuši arī virkni OpenCV apmācību, sākot no iesācēju līmeņa.
Citu nepieciešamo pakotņu instalēšana
ZBar instalēšana
Zbar ir labākā bibliotēka dažāda veida svītrkodu un QR kodu noteikšanai un dekodēšanai. Izmantojiet šo komandu, lai instalētu bibliotēku:
pip3 instalējiet pyzbar
Imutilu instalēšana
imutils tiek izmantots, lai padarītu būtiskas attēlu apstrādes funkcijas, piemēram, tulkošanu, pagriešanu, izmēru maiņu, skeletonizāciju un Matplotlib attēlu parādīšanu, izmantojot OpenCV. Lai instalētu imutils, izmantojiet zemāk esošo komandu:
instalējiet imutils
Argparse instalēšana
Izmantojiet zemāk esošo komandu, lai instalētu argparse bibliotēku. argparse ir atbildīgs par komandrindas argumentu parsēšanu.
pip3 instalēt argparse
Raspberry pi QR kodu lasītāja aparatūras iestatīšana
Šeit šim QR koda skenerim, izmantojot Raspberry Pi kameru, ir nepieciešama tikai Raspberry Pi un Pi kamera, un jums vienkārši jāpiestiprina kameras lentes savienotājs kameras slotā, kas norādīts Raspberry pi
Pi kameru var izmantot, lai izveidotu dažādus interesantus projektus, piemēram, Raspberry Pi novērošanas kameru, apmeklētāju uzraudzības sistēmu, mājas drošības sistēmu utt.
Python kods Raspberry Pi QR kodu lasītājam
Pilns Raspberry Pi QR lasītāja kods ir norādīts lapas beigās. Pirms programmējam Raspberry Pi, sapratīsim kodu.
Tātad, kā parasti, sāciet kodu, importējot visas nepieciešamās paketes.
no imutils.video importēt VideoStream no pyzbar importēt pyzbar import argparse importēt datumu importēt imutils importēt laiku importēt cv2
Tad izveidojiet argumentu parsētāju un parsējiet argumentus. Komandrindas arguments satur informāciju par CSV faila ceļu. CSV (Comma Separated Values) failā ir katra mūsu video straumes svītrkoda laika zīmogs un lietderīgā slodze.
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "ceļš uz CSV faila izvadīšanu, kurā ir svītrkodi") args = vars (ap.parse_args ())
Pēc tam inicializējiet video straumi un komentējiet komentēto rindiņu, ja izmantojat USB tīmekļa kameru.
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
Tagad cilpa iekšpusē paņemiet rāmi no video straumes un mainiet tā izmēru līdz 400 pikseļiem. Kad tas satver rāmi, izsauciet funkciju pyzbar.decode, lai noteiktu un atšifrētu QR kodu.
frame = vslasīt () frame = imutils.resize (rāmis, platums = 400) svītrkodi = pyzbar.decode (rāmis)
Tagad cilpa pār atklātajiem svītrkodiem, lai iegūtu svītrkoda atrašanās vietu, un zīmējiet norobežojošo lodziņu ap attēla svītrkodu.
svītrkodam svītrkodos: (x, y, w, h) = svītrkods. taisns cv2. taisnstūris (rāmis, (x, y), (x + w, y + h), (0, 0, 255), 2)
Pēc tam atšifrējiet noteikto svītrkodu virknē "utf-8", izmantojot dekodēšanas ("utf-8") funkciju, un pēc tam iegūstiet svītrkoda veidu, izmantojot funkciju barcode.type.
barcodeData = svītrkods.data.decode ("utf-8") barcodeType = svītrkoda.tips
Pēc tam saglabājiet iegūtos svītrkoda datus un svītrkoda tipu mainīgā nosaukuma tekstā un zīmējiet svītrkoda datus un veidu attēlā.
text = "{} ({})". format (svītrkodu dati, svītrkodu tips) cv2.putText (rāmis, teksts, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0,5, (0, 0, 255), 2)
Tagad parādiet izvadi ar svītrkoda datiem un svītrkoda tipu.
cv2.imshow ("Svītrkodu lasītājs", rāmis)
Tagad pēdējā darbībā pārbaudiet, vai taustiņš 's' ir nospiests, pēc tam izlauziet galveno cilpu un sāciet attīrīšanas procesu.
atslēga = cv2.waitKey (1) & 0xFF # ja tiek nospiests taustiņš `s, pārtrauciet darbību, ja taustiņš == ord (" s "): pārtraukums drukāšanai (" tīrīšana… ") csv.close () cv2.destroyAllWindows () vsstop ()
Raspberry Pi QR kodu skenera pārbaude
Kad iestatīšana ir gatava, palaidiet QR koda lasītāja programmu. Jūs redzēsiet logu, kurā redzams tiešais skats no jūsu kameras, tagad jūs varat uzrādīt svītrkodus PI kameras priekšā. Kad pi atšifrē svītrkodu, tas ap to iezīmē sarkanu lodziņu ar svītrkoda datiem un svītrkoda veidu, kā parādīts zemāk esošajā attēlā:
Tas ir tas, kā jūs varat viegli izveidot Raspberry Pi Camera QR kodu lasītāju, vienkārši izmantojot Raspberry Pi paneli un Pi kameru vai USB kameru.
Darba video un pilns šī projekta kods ir sniegts zemāk.