最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python實現(xiàn)掃碼工具的示例代碼

 更新時間:2020年10月09日 09:12:06   作者:ZackSock  
這篇文章主要介紹了Python實現(xiàn)掃碼工具的示例代碼,代碼簡單易懂對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

二維碼作為一種信息傳遞的工具,在當(dāng)今社會發(fā)揮了重要作用。從手機用戶登錄到手機支付,生活的各個角落都能看到二維碼的存在。那你知道二維碼是怎么解析的嗎?有想過自己實現(xiàn)一個掃碼工具嗎?如果想的話就繼續(xù)看下去吧!

一、案例分析

我們先思考一下,實現(xiàn)掃碼工具需要寫什么操作。在掃碼過程中我們需要打開攝像頭,如何由手機或者電腦識別二維碼。所以我們要實現(xiàn)兩個關(guān)鍵的步驟:調(diào)用攝像頭、識別二維碼。

這兩個操作分別對應(yīng)了兩個模塊,它們就是opencv和pyzbar,其中opencv是英特爾的計算機視覺處理模塊,而pyzbar則是用于解析二維碼的模塊。

二、環(huán)境

環(huán)境包括python環(huán)境和模塊。我的環(huán)境如下:

系統(tǒng):Windows 10
python:python 3.7.9
opencv:opencv-python-4.4.0.44
pyzbar:pyzbar-0.1.8

模塊安裝很簡單,我們直接用pip安裝,先安裝opencv模塊:

pip install opencv-python

然后是pyzbar模塊:

pip install pyzbar

在未指定安裝版本時,系統(tǒng)會自動安裝最新版。安裝好模塊后,我們就可以來實現(xiàn)掃碼工具了。

三、識別二維碼

有了pyzbar模塊后,我們識別二維碼的工作就非常簡單了,首先需要準(zhǔn)備一張二維碼。有了二維碼后就可以開始解析了,具體步驟如下:

  • 讀取二維碼圖片
  • 解析二維碼中的數(shù)據(jù)
  • 在解析出的數(shù)據(jù)中提取data信息

實現(xiàn)代碼如下:

import cv2
from pyzbar import pyzbar
# 1、讀取二維碼圖片
qrcode = cv2.imread('qrcode.jpg')
# 2、解析二維碼中的數(shù)據(jù)
data = pyzbar.decode(qrcode)
print(data)
# 3、在數(shù)據(jù)中解析出二維碼的data信息
text = data[0].data.decode('utf-8')
print(text)

在上面我們解析了兩次,第一次獲取了一個data,我們先來看看data長什么樣子:

[Decoded(data=b'http://weixin.qq.com/r/vC_fhynEKnRVrW3k93qu', type='QRCODE', rect=Rect(left=140, top=113, width=390, height=390), polygon=[Point(x=140, y=113), Point(x=140, y=503), Point(x=530, y=503), Point(x=530, y=113)])]

可以看到是一個列表,而且列表的第一個數(shù)據(jù)包含url的信息。所以我們需要通過下面的代碼再次解析:

text = data[0].data.decode('utf-8')

這樣我們就能拿到二維碼中包含的信息了。為了方便后續(xù)使用,可以將上面的代碼寫成一個函數(shù):

def scan_qrcode(img_path):
 qrcode = cv2.imread(img_path)
 data = pyzbar.decode(qrcode)
 return data[0].data.decode('utf-8')

接下來我們再看看如何調(diào)用攝像頭。

四、調(diào)用攝像頭

在opencv中提供了一個VideoCapture類用于讀取視頻,同樣可以用來調(diào)用攝像頭。調(diào)用攝像頭的步驟如下:

  • 調(diào)用攝像頭
  • 循環(huán)
  • 在循環(huán)內(nèi)讀取一幀畫面
  • 顯示當(dāng)前讀取的畫面
  • 等待鍵盤輸入
  • 判斷是否按退出鍵q
  • 按了推出鍵則退出,沒按則繼續(xù)循環(huán)

具體代碼如下:

import cv2
# 調(diào)用攝像頭
cap = cv2.VideoCapture(0)
while True:
 # 讀取一幀畫面
 ret, frame = cap.read()
 # 顯示當(dāng)前幀
 cv2.imshow('scan qrcode', frame)
 # 等待鍵盤輸入
 key = cv2.waitKey(10)
 # 當(dāng)按下q鍵時關(guān)閉攝像頭
 if key == ord('q'):
  break
# 銷毀所有窗口
cv2.destroyAllWindows()

你們可以自己嘗試運行一下上面的代碼,效果就像是打開了自己的前置攝像頭。

現(xiàn)在調(diào)用了攝像頭,我們可以把兩部分的代碼結(jié)合起來。

五、實現(xiàn)掃碼工具

我們掃碼工具的主體部分是調(diào)用攝像頭的操作,我們需要對讀取到的每一幀畫面進行解析,當(dāng)解析出結(jié)果后輸出并退出。具體代碼如下:

import cv2
from pyzbar import pyzbar

def scan_qrcode(qrcode):
 data = pyzbar.decode(qrcode)
 return data[0].data.decode('utf-8')

cap = cv2.VideoCapture(0)
while True:
 ret, frame = cap.read()
 cv2.imshow('scan qrcode', frame)

 # 解析二維碼
 text = None
 try:
  text = scan_qrcode(frame)
 except Exception as e:
  pass
 if text:
  print(text)
  break

 key = cv2.waitKey(10)
 if key == ord('q'):
  break
cv2.destroyAllWindows()

上面我們把scan_qrcode函數(shù)修改了一下,從原來的傳入圖片路徑到直接傳入圖片對象。因為通過VideoCapture對象獲取的圖片幀和通過cv2.imread獲取的圖片是同一數(shù)據(jù)類型。

上面關(guān)鍵步驟在解析二維碼的操作。首先定義一個text,因為解析過程中如果沒有二維碼會出現(xiàn)異常,所以用try-except語句處理。如何通過if判斷text的內(nèi)容,只有當(dāng)我們真正解析到了數(shù)據(jù),程序才會輸出結(jié)果,并退出程序。

到此這篇關(guān)于Python實現(xiàn)掃碼工具的文章就介紹到這了,更多相關(guān)python掃碼工具內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • celery在python爬蟲中定時操作實例講解

    celery在python爬蟲中定時操作實例講解

    在本篇文章里小編給大家整理了一篇關(guān)于celery在python爬蟲中定時操作實例講解內(nèi)容,需要的朋友們可以參考下。
    2020-11-11
  • pandas進行數(shù)據(jù)輸入和輸出的方法詳解

    pandas進行數(shù)據(jù)輸入和輸出的方法詳解

    這篇文章主要為大家詳細(xì)介紹了pandas進行數(shù)據(jù)輸入和輸出的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Pycharm IDE的安裝和使用教程詳解

    Pycharm IDE的安裝和使用教程詳解

    這篇文章主要介紹了Pycharm IDE的安裝和使用,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • python tkinter庫實現(xiàn)氣泡屏保和鎖屏

    python tkinter庫實現(xiàn)氣泡屏保和鎖屏

    這篇文章主要為大家詳細(xì)介紹了python tkinter庫實現(xiàn)氣泡屏保和鎖屏,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • pytorch加載訓(xùn)練好的模型用來測試或者處理方式

    pytorch加載訓(xùn)練好的模型用來測試或者處理方式

    這篇文章主要介紹了pytorch加載訓(xùn)練好的模型用來測試或者處理方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 淺談編碼,解碼,亂碼的問題

    淺談編碼,解碼,亂碼的問題

    下面小編就為大家?guī)硪黄獪\談編碼,解碼,亂碼的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-12-12
  • Python簡單的GUI程序示例詳解

    Python簡單的GUI程序示例詳解

    這篇文章主要為大家詳細(xì)介紹了Python簡單的GUI程序示例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • Python線性回歸實戰(zhàn)分析

    Python線性回歸實戰(zhàn)分析

    這篇文章主要介紹了Python線性回歸實戰(zhàn)分析以及代碼講解,對此有興趣的朋友學(xué)習(xí)下吧。
    2018-02-02
  • 關(guān)于python函數(shù)的建立、調(diào)用、傳參、返回值詳解

    關(guān)于python函數(shù)的建立、調(diào)用、傳參、返回值詳解

    這篇文章主要介紹了關(guān)于python函數(shù)的建立、調(diào)用、傳參、返回值詳解,Python?還支持自定義函數(shù),即將一段有規(guī)律的、可重復(fù)使用的代碼定義成函數(shù),從而達(dá)到一次編寫多次調(diào)用的目的,需要的朋友可以參考下
    2023-07-07
  • 解決pycharm安裝scrapy DLL load failed:找不到指定的程序的問題

    解決pycharm安裝scrapy DLL load failed:找不到指定的程序的問題

    很多朋友向小編求助pycharm安裝scrapy DLL load failed:找不到指定的程序的問題,就這一問題小編在window10 + anaconda3 +pycharm2020.1.1 + scrapy安裝親測可用,下面把我的處理過程分享到腳本之家平臺,供大家參考
    2021-06-06

最新評論

巍山| 沛县| 太保市| 萍乡市| 江油市| 固安县| 德钦县| 苏尼特右旗| 九龙坡区| 昂仁县| 桃源县| 宣恩县| 英吉沙县| 和林格尔县| 宁陕县| 辰溪县| 东兰县| 南木林县| 怀安县| 洛川县| 鄢陵县| 新营市| 封丘县| 镇平县| 太白县| 商城县| 定州市| 平潭县| 宁波市| 九龙坡区| 乌审旗| 武山县| 宁蒗| 克什克腾旗| 辽宁省| 泰宁县| 夏津县| 镇远县| 凤山县| 旺苍县| 天门市|