- ข้อกำหนด
- การติดตั้ง OpenCV ใน Raspberry Pi
- การติดตั้งแพ็คเกจอื่น ๆ ที่จำเป็น
- การตั้งค่าฮาร์ดแวร์ Raspberry pi QR Code Reader
- รหัส Python สำหรับ Raspberry Pi QR Code Reader
- การทดสอบเครื่องสแกนรหัส QR Raspberry Pi
QR code (Quick Response code) เป็นบาร์โค้ดเมทริกซ์ชนิดหนึ่งที่มีข้อมูลเกี่ยวกับรายการที่จะแนบเช่นข้อมูลตำแหน่งตัวระบุหรือตัวติดตามที่ระบุเว็บไซต์หรือแอปเป็นต้นซึ่งเป็นแบบออปติคอลที่เครื่องอ่านได้ ฉลากที่อยู่ในรูปแบบของภาพ 2 มิติและมีรูปแบบที่แตกต่างกัน หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับรหัส QR และวิธีสร้างรหัส QR โปรดทำตามบทช่วยสอนก่อนหน้าของเรา
ในบทช่วยสอนนี้เราจะสร้างเครื่องสแกน QR Code ที่ใช้Raspberry Piโดยใช้ไลบรารี OpenCV และ ZBar ZBar เป็นไลบรารีที่ดีที่สุดสำหรับการตรวจจับและถอดรหัสบาร์โค้ดและรหัส QR ประเภทต่างๆ OpenCV ใช้เพื่อดึงเฟรมใหม่จากสตรีมวิดีโอและประมวลผล เมื่อ OpenCV จับเฟรมได้แล้วเราสามารถส่งต่อไปยังไลบรารีถอดรหัสบาร์โค้ด Python โดยเฉพาะเช่น ZBar ซึ่งจะถอดรหัสบาร์โค้ดและแปลงเป็นข้อมูลตามลำดับ
ข้อกำหนด
- Raspberry Pi 3 (ทุกรุ่น)
- โมดูลกล้อง Pi
ก่อนที่จะดำเนินการกับเครื่องสแกนโค้ด QR Raspberry Pi 3ก่อนอื่นเราต้องติดตั้ง OpenCV, บาร์โค้ดถอดรหัสไลบรารี ZBar, imutils และการอ้างอิงอื่น ๆ ในโครงการนี้ OpenCV ใช้ที่นี่สำหรับการประมวลผลภาพดิจิทัล แอพพลิเคชั่นที่พบบ่อยที่สุดของ Digital Image Processing ได้แก่ การตรวจจับวัตถุการจดจำใบหน้าและตัวนับคน
การติดตั้ง OpenCV ใน Raspberry Pi
ที่นี่จะใช้ไลบรารี OpenCV สำหรับเครื่องสแกน Raspberry Pi QR ในการติดตั้ง OpenCV ก่อนอื่นให้อัปเดต Raspberry Pi
อัปเดต sudo apt-get
จากนั้นติดตั้งการอ้างอิงที่จำเป็นสำหรับการติดตั้ง OpenCV บน 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 - sudo apt-get install libqt4-test –y
หลังจากนั้นให้ติดตั้ง OpenCV ใน Raspberry Pi โดยใช้คำสั่งด้านล่าง
pip3 ติดตั้ง opencv-Contrib-python == 4.1.0.25
ก่อนหน้านี้เราเคยใช้ OpenCV กับ Raspberry pi และสร้างบทเรียนมากมาย
- การติดตั้ง OpenCV บน Raspberry Pi โดยใช้ CMake
- การจดจำใบหน้าแบบเรียลไทม์ด้วย Raspberry Pi และ OpenCV
- การจดจำป้ายทะเบียนโดยใช้ Raspberry Pi และ OpenCV
- การประมาณขนาดฝูงชนโดยใช้ OpenCV และ Raspberry Pi
นอกจากนี้เรายังได้สร้างชุดบทเรียน OpenCV โดยเริ่มตั้งแต่ระดับเริ่มต้น
การติดตั้งแพ็คเกจอื่น ๆ ที่จำเป็น
การติดตั้ง ZBar
Zbar เป็นไลบรารีที่ดีที่สุดสำหรับการตรวจจับและถอดรหัสบาร์โค้ดและรหัส QR ประเภทต่างๆ ใช้คำสั่งด้านล่างเพื่อติดตั้งไลบรารี:
pip3 ติดตั้ง pyzbar
การติดตั้ง imutils
imutils ใช้เพื่อสร้างฟังก์ชันการประมวลผลภาพที่จำเป็นเช่นการแปลการหมุนการปรับขนาดโครงกระดูกและการแสดงภาพ Matplotlib ง่ายขึ้นด้วย OpenCV ใช้คำสั่งด้านล่างเพื่อติดตั้ง imutils:
pip3 ติดตั้ง imutils
การติดตั้ง argparse
ใช้คำสั่งด้านล่างเพื่อติดตั้งไลบรารี argparse argparse มีหน้าที่ในการแยกวิเคราะห์อาร์กิวเมนต์บรรทัดคำสั่ง
pip3 ติดตั้ง argparse
การตั้งค่าฮาร์ดแวร์ Raspberry pi QR Code Reader
ที่นี่เราต้องการเฉพาะกล้อง Raspberry Pi และ Pi สำหรับเครื่องสแกนรหัส QRนี้โดยใช้กล้อง Raspberry Piและคุณเพียงแค่ต้องเชื่อมต่อขั้วต่อริบบิ้นของกล้องในช่องกล้องที่ให้ไว้ใน Raspberry pi
กล้อง Piสามารถใช้เพื่อสร้างโครงการที่น่าสนใจต่างๆเช่น Raspberry Pi Surveillance Camera, Visitor Monitoring System, Home Security System เป็นต้น
รหัส Python สำหรับ Raspberry Pi QR Code Reader
รหัสที่สมบูรณ์สำหรับเครื่องอ่าน Raspberry Pi QRจะได้รับที่ส่วนท้ายของหน้า ก่อนที่เราจะตั้งโปรแกรม Raspberry Pi เรามาทำความเข้าใจกับโค้ดกันก่อน
ดังนั้นตามปกติเริ่มต้นรหัสโดยการนำเข้าแพ็คเกจที่จำเป็นทั้งหมด
จาก imutils.video นำเข้า VideoStream จาก pyzbar import pyzbar import argparse import datetime imutils import time import cv2
จากนั้นสร้างตัวแยกวิเคราะห์อาร์กิวเมนต์และแยกวิเคราะห์อาร์กิวเมนต์ อาร์กิวเมนต์บรรทัดคำสั่งมีข้อมูลเกี่ยวกับเส้นทางของไฟล์ CSV ไฟล์ CSV (Comma Separated Values) มีการประทับเวลาและเพย์โหลดของบาร์โค้ดทั้งหมดจากสตรีมวิดีโอของเรา
ap = argparse.ArgumentParser () ap.add_argument ("- o", "--output", type = str, default = "barcodes.csv", help = "พา ธ ไปยังเอาต์พุตไฟล์ CSV ที่มีบาร์โค้ด") args = vars (ap.parse_args ())
หลังจากนั้นให้เริ่มต้นสตรีมวิดีโอและยกเลิกการแสดงความคิดเห็นในบรรทัดที่แสดงความคิดเห็นหากคุณใช้เว็บแคม USB
#vs = VideoStream (src = 0).start () vs = VideoStream (usePiCamera = True).start () time.sleep (2.0)
ตอนนี้อยู่ใน ลูป จับเฟรมจากสตรีมวิดีโอแล้วปรับขนาดเป็น 400 พิกเซล เมื่อจับเฟรมได้แล้วให้เรียกใช้ฟังก์ชัน pyzbar.decode เพื่อตรวจจับและถอดรหัสรหัส QR
frame = vs.read () frame = imutils.resize (frame, width = 400) barcodes = pyzbar.decode (เฟรม)
ตอนนี้วนรอบบาร์โค้ดที่ตรวจพบเพื่อแยกตำแหน่งของบาร์โค้ดและวาดกรอบล้อมรอบบาร์โค้ดบนรูปภาพ
สำหรับบาร์โค้ดในบาร์โค้ด: (x, y, w, h) = barcode.rect cv2.rectangle (frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
จากนั้นถอดรหัสบาร์โค้ดที่ตรวจพบเป็นสตริง "utf-8" โดยใช้ฟังก์ชัน ถอดรหัส ("utf-8") จากนั้นแยกประเภทของบาร์โค้ดโดยใช้ฟังก์ชัน barcode.type
barcodeData = barcode.data.decode ("utf-8") barcodeType = barcode.type
หลังจากนั้นให้บันทึกข้อมูลบาร์โค้ดที่แยกออกมาและประเภทบาร์โค้ดภายในตัวแปรที่ชื่อข้อความจากนั้นวาดข้อมูลบาร์โค้ดและพิมพ์บนรูปภาพ
text = "{} ({})". format (barcodeData, barcodeType) cv2.putText (เฟรม, ข้อความ, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
ตอนนี้แสดงผลลัพธ์ด้วยข้อมูลบาร์โค้ดและประเภทบาร์โค้ด
cv2.imshow ("เครื่องอ่านบาร์โค้ด", เฟรม)
ตอนนี้ในขั้นตอนสุดท้ายตรวจสอบว่ามีการกดปุ่มหรือไม่จากนั้นแยกลูปหลักออกและเริ่มกระบวนการล้างข้อมูล
key = cv2.waitKey (1) & 0xFF # ถ้ากดปุ่ม "s` จะแตกออกจากลูป if key == ord (" s "): break print (" cleaning up… ") csv.close () cv2.destroyAllWindows () เทียบกับstop ()
การทดสอบเครื่องสแกนรหัส QR Raspberry Pi
เมื่อการตั้งค่าของคุณพร้อมแล้วให้เปิดโปรแกรมอ่านโค้ด QR คุณจะเห็นหน้าต่างแสดงมุมมองสดจากกล้องของคุณตอนนี้คุณสามารถนำเสนอบาร์โค้ดที่หน้ากล้อง PI เมื่อ pi ถอดรหัสบาร์โค้ดมันจะวาดกล่องสีแดงรอบ ๆ ด้วยข้อมูลบาร์โค้ดและประเภทบาร์โค้ดดังที่แสดงในภาพด้านล่าง:
นี่คือวิธีที่คุณสามารถสร้างเครื่องอ่านรหัส QR ของกล้อง Raspberry Piได้อย่างง่ายดายเพียงใช้บอร์ด Raspberry Pi และกล้อง Pi หรือกล้อง USB
วิดีโอที่ใช้งานได้และรหัสที่สมบูรณ์สำหรับโครงการนี้มีให้ด้านล่าง