Python調(diào)用PC攝像頭實(shí)現(xiàn)掃描二維碼
簡介
使用PC攝像機(jī)掃描二維碼可以有很多應(yīng)用場景,例如:
支付寶、微信支付等移動(dòng)支付方式需要使用二維碼進(jìn)行支付,PC攝像機(jī)可以掃描這些支付二維碼,從而實(shí)現(xiàn)PC端支付功能;
在生產(chǎn)制造過程中,可以使用二維碼來管理產(chǎn)品和生產(chǎn)過程,PC攝像機(jī)可以掃描這些二維碼來獲取產(chǎn)品信息和生產(chǎn)信息;
二維碼可以作為門禁系統(tǒng)的一種驗(yàn)證方式,PC攝像機(jī)可以掃描這些二維碼,從而實(shí)現(xiàn)門禁驗(yàn)證功能;
在圖書館、超市等場所,可以使用二維碼作為條形碼進(jìn)行掃描和識(shí)別,PC攝像機(jī)可以掃描這些二維碼,從而實(shí)現(xiàn)快速識(shí)別和管理功能。
總之,PC攝像機(jī)掃描二維碼的應(yīng)用場景很廣泛,可以應(yīng)用于各種需要快速掃描、識(shí)別和管理的場景。
源代碼
import cv2 from pyzbar import pyzbar import winsound # 打開攝像頭 cap = cv2.VideoCapture(0) # 設(shè)置窗口名和窗口大小 cv2.namedWindow('Scan QR Code', cv2.WINDOW_NORMAL) cv2.resizeWindow('Scan QR Code', 800, 600) # 創(chuàng)建聲音提示函數(shù) def beep(): frequency = 2500 duration = 1000 winsound.Beep(frequency, duration) while True: # 讀取攝像頭畫面 _, frame = cap.read() # 轉(zhuǎn)換為灰度圖像 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 檢測二維碼 barcodes = pyzbar.decode(gray) # 遍歷所有檢測到的二維碼 for barcode in barcodes: # 提取二維碼的邊界框坐標(biāo) (x, y, w, h) = barcode.rect # 在圖像中繪制二維碼的邊界框和文本 cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 0, 255), 2) cv2.putText(frame, barcode.data.decode('utf-8'), (x, y-10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) # 發(fā)出聲音提示 beep() # 輸出掃描到的二維碼內(nèi)容 print(barcode.data.decode('utf-8')) # 顯示圖像 cv2.imshow('Scan QR Code', frame) # 按下ESC鍵退出程序 if cv2.waitKey(1) == 27: break # 釋放攝像頭資源 cap.release() # 關(guān)閉所有窗口 cv2.destroyAllWindows()
源代碼說明
這段代碼使用OpenCV和pyzbar庫實(shí)現(xiàn)了從攝像頭讀取視頻流并掃描其中的二維碼。具體步驟如下:
導(dǎo)入所需庫:cv2用于讀取攝像頭視頻流,pyzbar用于識(shí)別二維碼,winsound用于發(fā)出聲音提示。
打開攝像頭:使用cv2.VideoCapture(0)打開攝像頭。
設(shè)置窗口:使用cv2.namedWindow()和cv2.resizeWindow()函數(shù)設(shè)置窗口名稱和大小。
創(chuàng)建聲音提示函數(shù):使用winsound.Beep()函數(shù)創(chuàng)建聲音提示函數(shù)beep()。
循環(huán)讀取視頻流:使用while循環(huán)不斷讀取攝像頭視頻流,將每一幀轉(zhuǎn)換為灰度圖像。
檢測二維碼:使用pyzbar.decode()函數(shù)檢測灰度圖像中的所有二維碼。
遍歷二維碼:使用for循環(huán)遍歷所有檢測到的二維碼,提取二維碼的邊界框坐標(biāo)并在圖像中繪制邊界框和文本。
發(fā)出聲音提示:調(diào)用beep()函數(shù)發(fā)出聲音提示。
輸出二維碼內(nèi)容:使用print()函數(shù)輸出掃描到的二維碼內(nèi)容。
顯示圖像:使用cv2.imshow()函數(shù)顯示掃描到的圖像。
退出程序:如果按下ESC鍵,退出循環(huán)。
釋放資源:釋放攝像頭資源,關(guān)閉所有窗口。
使用該代碼,可以通過電腦攝像頭掃描二維碼,適用于需要在電腦上進(jìn)行二維碼掃描的場景。
效果如下所示
到此這篇關(guān)于Python調(diào)用PC攝像頭實(shí)現(xiàn)掃描二維碼的文章就介紹到這了,更多相關(guān)Python調(diào)用攝像頭掃描二維碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python讀取圖像矩陣文件并轉(zhuǎn)換為向量實(shí)例
這篇文章主要介紹了python讀取圖像矩陣文件并轉(zhuǎn)換為向量實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06使用python實(shí)現(xiàn)CGI環(huán)境搭建過程解析
這篇文章主要介紹了使用python實(shí)現(xiàn)CGI環(huán)境搭建過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04Matplotlib使用Cursor實(shí)現(xiàn)UI定位的示例代碼
這篇文章主要介紹了Matplotlib使用Cursor實(shí)現(xiàn)UI定位的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能示例【基于socket套接字】
這篇文章主要介紹了Python 網(wǎng)絡(luò)編程之TCP客戶端/服務(wù)端功能,結(jié)合實(shí)例形式分析了Python使用socket套接字實(shí)現(xiàn)TCP協(xié)議下的客戶端與服務(wù)器端數(shù)據(jù)傳輸操作技巧,需要的朋友可以參考下2019-10-10matplotlib savefig 保存圖片大小的實(shí)例
今天小編就為大家分享一篇matplotlib savefig 保存圖片大小的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05在anaconda中配置graphviz包的詳細(xì)過程
graphviz是貝爾實(shí)驗(yàn)室開發(fā)的一個(gè)開源的工具包,它使用一個(gè)特定的DSL(領(lǐng)域特定語言):dot作為腳本語言,然后使用布局引擎來解析此腳本,并完成自動(dòng)布局,這篇文章主要介紹了如何在anaconda中配置graphviz包,需要的朋友可以參考下2023-02-02Python?函數(shù)參數(shù)11個(gè)案例分享
大家好,今天給大家分享一下明哥整理的一篇?Python?參數(shù)的內(nèi)容,內(nèi)容非常的干,全文通過案例的形式來理解知識(shí)點(diǎn),自認(rèn)為比網(wǎng)上?80%?的文章講的都要明白,如果你是入門不久的?python?新手,相信本篇文章應(yīng)該對你會(huì)有不小的幫助,需要的朋友可以參考下2023-02-02