日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python实战扫码下载_实例:用 Python 做一个扫码工具

發布時間:2023/12/10 python 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python实战扫码下载_实例:用 Python 做一个扫码工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原標題:實例:用 Python 做一個掃碼工具

來自公眾號: 新建文件夾X

鏈接:https://blog.csdn.net/ZackSock/article/details/108610957Python實現掃碼工具

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

一、案例分析

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

二、環境

環境包括python環境和模塊。我的環境如下:

系統: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

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

1.讀取二維碼圖片2.解析二維碼中的數據3.在解析出的數據中提取data信息

實現代碼如下:

import cv2

from pyzbar import pyzbar

# 1、讀取二維碼圖片

qrcode = cv2.imread('qrcode.jpg')

# 2、解析二維碼中的數據

data = pyzbar.decode(qrcode)

print(data)

# 3、在數據中解析出二維碼的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)])]

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

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

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

def scan_qrcode(img_path):

qrcode = cv2.imread(img_path)

data = pyzbar.decode(qrcode)

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

接下來我們再看看如何調用攝像頭。

四、調用攝像頭

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

1.調用攝像頭2.循環3.在循環內讀取一幀畫面4.顯示當前讀取的畫面5.等待鍵盤輸入6.判斷是否按退出鍵q7.按了退出鍵則退出,沒按則繼續循環

具體代碼如下:

import cv2

# 調用攝像頭

cap = cv2.VideoCapture(0)

while True:

# 讀取一幀畫面

ret, frame = cap.read

# 顯示當前幀

cv2.imshow('scan qrcode', frame)

# 等待鍵盤輸入

key = cv2.waitKey(10)

# 當按下q鍵時關閉攝像頭

if key == ord('q'):

break

# 銷毀所有窗口

cv2.destroyAllWindows

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

現在調用了攝像頭,我們可以把兩部分的代碼結合起來。

五、實現掃碼工具

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

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.readcv2.imshow('scan qrcode', frame)

# 解析二維碼text = Nonetry:text = scan_qrcode(frame)except Exception as e:passif text:print(text)break

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

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

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

到這里,我們就實現了掃碼工具。 返回搜狐,查看更多

責任編輯:

總結

以上是生活随笔為你收集整理的python实战扫码下载_实例:用 Python 做一个扫码工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。