python使用pyzbar+opencv實現實時識別二維碼--李渣渣(lizaza.cn)


   寫東西就要寫全面,前兩天寫了如何用python生成二維碼,今天博主就給大家介紹一個識別二維碼的方法。

1、安裝本次開發所需要的庫opencv 和pyzbar

pip install pyzbar
pip install opencv-python

2、寫代碼

    1)導入所需的庫

from pyzbar.pyzbar import decode
import cv2

    2)創建一段測試代碼,查看識別后的返回數據

def test():
    img = cv2.imread("lizaza.png")
    result = decode(img)
    print(result)

    3)根據需要保留對應的返回數據

def test():
    img = cv2.imread("lizaza.png")
    result = decode(img)
    print(result)
    for d in result:
        print(d.data)

    4)調用opencv的方法來實例化一個對象

capture = cv2.VideoCapture(0)

    5)創建一個死循環實時更新攝像頭所采集到的信息

while True:
    # 獲取圖像
    fet, frame = capture.read()

    6)識別采集到的二維碼並輸出所需的數據

    # 識別二維碼
    data = decode(frame)
    for d in data:
        r_data = d.data.decode("utf-8")
        print(r_data)

    7)顯示攝像頭所采集到的圖像,並設置鍵盤監聽來關閉程序

    cv2.imshow("QRCode", frame)
    # 設置關閉窗口
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
        pass

3、完整代碼

from pyzbar.pyzbar import decode
import cv2


capture = cv2.VideoCapture(0)

while True:
    # 獲取圖像
    fet, frame = capture.read()
    # 識別二維碼
    data = decode(frame)
    for d in data:
        r_data = d.data.decode("utf-8")
        print(r_data)
    cv2.imshow("QRCode", frame)
    # 設置關閉窗口
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
        pass
    pass
capture.release()
cv2.destroyAllWindows()

4、總結

    pyzbar+opencv直接識別靜態圖片時無法識別傾斜的二維碼,但是實時識別二維碼的時候可以正常識別,博主暫時也搞不懂是啥原因。opencv如果直接使用cv.imshow()函數,窗口名中包含中文,則顯示為亂碼,建議還是使用英文命名。

 

版權聲明:該文章為博主原創,如有轉載請標明出處https://www.lizaza.cn


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM