📜  使用 OpenCV 的网络摄像头二维码扫描仪

📅  最后修改于: 2022-05-13 01:55:09.191000             🧑  作者: Mango

使用 OpenCV 的网络摄像头二维码扫描仪

在本文中,我们将了解如何使用网络摄像头执行二维码扫描。

网络摄像头二维码扫描仪

在开始之前,您需要了解此过程将如何工作。首先你需要打开你的网络摄像头,你必须运行你的Python程序来准备扫描二维码。您可以在手机上拍摄二维码图片并在网络摄像头前展示该图片。它可以正确识别屏幕上显示的二维码。该程序会将您重定向到隐藏在二维码中的链接。

要求:

pip install OpenCV
pip install webbrowser ( built in )

步骤 1:要创建二维码扫描器,您需要在命令提示符下安装 OpenCV 库。首先,您需要导入cv2和浏览器。cv2用于通过网络摄像头扫描二维码,并使用网络浏览器将URL带入浏览器。

Python3
import cv2
import webbrowser


Python3
cap = cv2.VideoCapture(0)
# initialize the cv2 QRCode detector
detector = cv2.QRCodeDetector()


Python3
while True:
    _, img = cap.read()


Python3
# detect and decode
   data, bbox, _ = detector.detectAndDecode(img)
   # check if there is a QRCode in the image
   if data:
       a=data
       break


Python3
cv2.imshow("QRCODEscanner", img)    
    if cv2.waitKey(1) == ord("q"):
        break
  
b=webbrowser.open(str(a))
cap.release()
cv2.destroyAllWindows()


第 2 步:接下来,我们需要启动相机以捕获 QR 码。为此,声明一个名为 cap 的变量,并在此变量中传递实例cv2.VideoCapture(0) 。下一个过程是我们需要创建一个名为检测器的变量,并在该变量中调用对象cv2.QRCodeDetector() 。此对象对于实时捕获 QR 码非常有用。

蟒蛇3

cap = cv2.VideoCapture(0)
# initialize the cv2 QRCode detector
detector = cv2.QRCodeDetector()

第 3 步:这一步非常重要,您需要创建一个while循环,并在此循环中创建一个名为img的变量,此循环将连续读取您的网络摄像头屏幕,直到此循环中断

蟒蛇3

while True:
    _, img = cap.read()

第四步:

接下来,创建一个名为 data 的变量,该变量用于解码二维码,如果二维码图像中存在任何数据,它将打破循环并在浏览器中打开链接。所以这就是我在这里插入的条件。

蟒蛇3

# detect and decode
   data, bbox, _ = detector.detectAndDecode(img)
   # check if there is a QRCode in the image
   if data:
       a=data
       break

第 5 步:

最后,调用对象 cv2.imshow 这将产生输出,您必须分配键以打破循环。在这里,我分配了一个名为 q 的键,当我们按下 q 时,它将停止视频流。

然后你必须创建变量,在这个变量中你需要调用对象 webbrowser.open( 在这个对象中传递变量 a )

蟒蛇3

cv2.imshow("QRCODEscanner", img)    
    if cv2.waitKey(1) == ord("q"):
        break
  
b=webbrowser.open(str(a))
cap.release()
cv2.destroyAllWindows()

输出 :