منظور از اسکن به صورت آنلاین، یعنی بدون استفاده از تصویر ثابت و با استفاده از Webcam یا دوربین لپ تاپ و گوشی امکان خواندن و استخراج QR Code فراهم گردد.
جهت اسكن QR Code در مرحله اول دسترسي از زبان پايتون به دوربین لپ تاب انجام میشود. به این منظور کتابخانه OpenCV باید توسط Command Promptپایتون نصب شوند.
pip install OpenCV
در مرحله بعد هر دو كتابخانه را جهت استفاده در برنامه import ميكنيم. از cv2جهت دسترسي به دوربين و خواندن كد QR استفاده ميشود.
import cv2
گرفتن تصاوير دوربين وب كم توسط كلاس VideoCaptureدر cv2 انجام ميشود. همچنين رمز گشايي كد QRنيز توسط كلاس QRCodeDetector انجام ميگردد.
vCapture = cv2.VideoCapture(0) qrDetector = cv2.QRCodeDetector()
جهت خواندن مداوم وب کم از یک حلقه استفاده میشود.
while True: ret, img = vCapture.read()
جهت رمز گشایی کد QRاز تابع detectAndDecode استفاده میشود.
data, bbox, qrcode = qrDetector.detectAndDecode(img)
در مرحله بعدی تصاویر دریافتی از وب کم به صورت یک ویدئو در یک پنجره جدید به کاربر نمایش داده خواهد شد.
cv2.imshow("QR Code Scanner", img)
جهت خروج کاربر از حلقه بدون خواندن کد QR کلید q در صفحه کلید در نظر گرفته شده است.
if cv2.waitKey(1) == ord("q"): break
در نهايت مقدار رمز گشايي شده ي كد QR نمايش داده ميشود.
در اين مثال : http://www.eyc.ac.ir
کد کامل به شرح ذیل است:
""" Created on Sat Oct 15 11:02:38 2022 @author: Khodaeian """ import cv2 # initialize the webcam for capturing QR Code vCapture = cv2.VideoCapture(0) # initialize the cv2 QRCode detector qrDetector = cv2.QRCodeDetector() a = '' while True: ret, img = vCapture.read() # detect and decode data, bbox, qrcode = qrDetector.detectAndDecode(img) # check if there is a QRCode in the image if data: a = data break # show the video capturing in new window cv2.imshow("QR Code Scanner", img) # press the q it will stop the video streaming if cv2.waitKey(1) == ord("q"): break print(str(a)) vCapture.release() cv2.destroyAllWindows()
Reference:
[1] https://morioh.com/p/29f7e4c5f900
[2] https://docs.opencv.org/4.x/de/dc3/classcv_1_1QRCodeDetector.html
[3] https://www.dynamsoft.com/codepool/opencv-python-webcam-barcode-reader.html
[4] https://www.geeksforgeeks.org/webcam-qr-code-scanner-using-opencv/