- المتطلبات
- تثبيت OpenCV في Raspberry Pi
- تثبيت الحزم الأخرى المطلوبة
- إعداد جهاز Raspberry pi QR Code Reader
- كود Python لقارئ رمز الاستجابة السريعة Raspberry Pi
- اختبار الماسح الضوئي لرموز Raspberry Pi QR
رمز الاستجابة السريعة (رمز الاستجابة السريعة) هو نوع من الباركود المصفوف الذي يحتوي على معلومات حول العنصر الذي تم إرفاقه به ، مثل بيانات الموقع أو المعرف أو المتتبع الذي يحدد موقع الويب أو التطبيق ، وما إلى ذلك ، وهو بصري يمكن قراءته آليًا التسمية التي تكون في شكل صورة ثنائية الأبعاد ولها نمط مختلف. لمعرفة المزيد حول رموز QR وكيفية إنشاء رمز QR ، اتبع برنامجنا التعليمي السابق.
في هذا البرنامج التعليمي ، سنقوم ببناء ماسح QR Code المستند إلى Raspberry Pi باستخدام مكتبة OpenCV و ZBar. ZBar هي أفضل مكتبة لاكتشاف وفك تشفير الأنواع المختلفة من الرموز الشريطية ورموز QR. يتم استخدام OpenCV لانتزاع إطار جديد من دفق الفيديو ومعالجته. بمجرد أن يلتقط OpenCV إطارًا ، يمكننا عندئذٍ تمريره إلى مكتبة مخصصة لفك تشفير الرموز الشريطية في Python مثل ZBar الذي يقوم بفك شفرة الرمز الشريطي وتحويله إلى معلومات ذات صلة.
المتطلبات
- Raspberry Pi 3 (أي إصدار)
- وحدة الكاميرا Pi
قبل المتابعة مع ماسح رمز الاستجابة السريعة Raspberry Pi 3 ، أولاً ، نحتاج إلى تثبيت OpenCV ومكتبة فك تشفير الباركود ZBar و imutils وبعض التبعيات الأخرى في هذا المشروع. يتم استخدام OpenCV هنا لمعالجة الصور الرقمية. أكثر تطبيقات معالجة الصور الرقمية شيوعًا هي اكتشاف الكائنات والتعرف على الوجوه وعداد الأشخاص.
تثبيت OpenCV في Raspberry Pi
هنا سيتم استخدام مكتبة OpenCV لماسح ضوئي Raspberry Pi QR. لتثبيت OpenCV ، قم أولاً بتحديث Raspberry Pi.
sudo apt-get update
ثم قم بتثبيت التبعيات المطلوبة لتثبيت 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 –y 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 لماسح رمز الاستجابة السريعة هذا باستخدام كاميرا Raspberry Pi وتحتاج فقط إلى إرفاق موصل شريط الكاميرا في فتحة الكاميرا الموجودة في Raspberry pi
يمكن استخدام كاميرا Pi لإنشاء العديد من المشاريع المثيرة للاهتمام مثل Raspberry Pi Surveillance Camera ، ونظام مراقبة الزوار ، ونظام أمان المنزل ، وما إلى ذلك.
كود Python لقارئ رمز الاستجابة السريعة Raspberry Pi
يتم توفير الكود الكامل لقارئ Raspberry Pi QR في نهاية الصفحة. قبل أن نبرمج Raspberry Pi ، دعونا نفهم الكود.
لذلك ، كالعادة ، ابدأ الكود عن طريق استيراد جميع الحزم المطلوبة.
من imutils.video استيراد VideoStream من pyzbar استيراد pyzbar استيراد argparse استيراد تاريخ ووقت استيراد imutils استيراد وقت استيراد cv2
ثم قم ببناء المحلل اللغوي للحجة وتحليلها. تحتوي وسيطة سطر الأوامر على معلومات حول مسار ملف CSV. يحتوي ملف CSV (قيم مفصولة بفواصل) على الطابع الزمني والحمولة لكل رمز شريطي من دفق الفيديو الخاص بنا.
ap = argparse.ArgumentParser () ap.add_argument ("- o"، "--output"، type = str، افتراضي = "barcodes.csv"، help = "path to output CSV file has barcodes") args = vars (ap.parse_args ())
بعد ذلك ، قم بتهيئة دفق الفيديو وإلغاء التعليق على سطر التعليق إذا كنت تستخدم كاميرا ويب USB.
#vs = VideoStream (src = 0).start () مقابل = VideoStream (usePiCamera = True).start () time.sleep (2.0)
الآن داخل الحلقة ، التقط إطارًا من دفق الفيديو وقم بتغيير حجمه إلى 400 بكسل. بمجرد التقاط الإطار ، اتصل بوظيفة pyzbar.decode لاكتشاف رمز الاستجابة السريعة وفك تشفيره .
الإطار = مقابل () الإطار = imutils.resize (الإطار ، العرض = 400) الرموز الشريطية = pyzbar.decode (الإطار)
الآن ، قم بالتكرار فوق الرموز الشريطية المكتشفة لاستخراج موقع الرمز الشريطي ورسم المربع المحيط حول الرمز الشريطي على الصورة.
للرموز الشريطية في الباركود: (x ، y ، w ، h) = الرمز الشريطي. مستطيل cv2. الصحيح (إطار ، (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 (frame، text، (x، y - 10)، cv2.FONT_HERSHEY_SIMPLEX، 0.5، (0، 0، 255)، 2)
اعرض الآن الإخراج مع بيانات الباركود ونوع الباركود.
cv2.imshow ("قارئ الرمز الشريطي" ، إطار)
الآن في الخطوة الأخيرة ، تحقق مما إذا كان المفتاح مضغوطًا ، ثم قم بفصل الحلقة الرئيسية وابدأ عملية التنظيف.
key = cv2.waitKey (1) & 0xFF # إذا تم الضغط على مفتاح `s` ، قطع من الحلقة إذا كان المفتاح == ord (" s "): break print (" Cleaning up… ") csv.close () cv2.destroyAllWindows () مقابل إيقاف ()
اختبار الماسح الضوئي لرموز Raspberry Pi QR
بمجرد أن يصبح الإعداد جاهزًا ، قم بتشغيل برنامج قارئ رمز الاستجابة السريعة. سترى نافذة تعرض منظرًا مباشرًا من الكاميرا ، والآن يمكنك تقديم رموز شريطية أمام كاميرا PI. عندما يقوم pi بفك تشفير رمز شريطي ، فإنه سيرسم مربعًا أحمر حوله مع بيانات الباركود ونوع الباركود كما هو موضح في الصورة أدناه:
هذه هي الطريقة التي يمكنك بها بسهولة إنشاء قارئ رمز الاستجابة السريعة للكاميرا Raspberry Pi باستخدام لوحة Raspberry Pi وكاميرا Pi أو كاميرا USB.
فيما يلي فيديو عملي وكود كامل لهذا المشروع.