如何利用python檢測(cè)圖片是否包含二維碼
前言
因?yàn)橐恢痹趲讉€(gè)平臺(tái)發(fā)文章,發(fā)現(xiàn)有些平臺(tái)并不會(huì)檢測(cè)文章中的圖片是否會(huì)包含二維碼,但是其中也有平臺(tái)會(huì)去檢測(cè),所以就去研究了一下python如何去檢測(cè)。搜了一下大概有兩個(gè)庫(kù)可以使用:
- 一個(gè)是zbar,這個(gè)庫(kù)是挺牛的,不過(guò)只支持python2.7,再者也沒(méi)有繼續(xù)維護(hù),什么年代了,應(yīng)該沒(méi)人使用python2.7了吧(2020年1月以后連python2.7都不再維護(hù)了,有還在使用的童靴該跟上時(shí)代了)。
- 一個(gè)是pyzbar,基本上傳承了zbar的功能。
安裝
pip install pyzbar -i http://pypi.douban.com/simple --trusted-host pypi.douban.com pip install Pillow
測(cè)試
準(zhǔn)備圖片
首先去二維碼生成網(wǎng)站準(zhǔn)備一堆二維碼作為測(cè)試準(zhǔn)備,我準(zhǔn)備了一些圖片,也有不包含二維碼的。
代碼
使用方法如下圖,圖片使用Pillow
庫(kù)打開(kāi),再用pyzbar
的decode
解碼,代碼如下:
import pyzbar.pyzbar as pyzbar from PIL import Image,ImageEnhance import os img_dir = "..\\img" def open_img(): img_list = [] for _,_,file_list in os.walk(img_dir): img_list = [os.path.join(img_dir,file) for file in file_list if file.endswith(".jpg") or file.endswith(".png") ] print("所有文件:{}".format(img_list)) return img_list def show(): img_list = open_img() for _img in img_list: img = Image.open(_img) # img = ImageEnhance.Brightness(img).enhance(2.0)#增加亮度 # img = ImageEnhance.Sharpness(img).enhance(17.0)#銳利化 # img = ImageEnhance.Contrast(img).enhance(4.0)#增加對(duì)比度 # img = img.convert('L')#灰度化 texts = pyzbar.decode(img) if not texts: print("{}文件不存在二維碼".format(_img)) for text in texts: t = text.data.decode("utf-8") if t: print("{}文件存在二維碼,內(nèi)容為:{}".format(_img,t)) if __name__ == '__main__': show()
注釋掉的代碼可以在圖片識(shí)別率低的情況下打開(kāi),以此提高圖片亮度。
運(yùn)行結(jié)果
都能正確識(shí)別出來(lái),效果還是可以的。
以上就是如何利用python檢測(cè)圖片是否包含二維碼的詳細(xì)內(nèi)容,更多關(guān)于python 二維碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python操作mongodb數(shù)據(jù)庫(kù)進(jìn)行模糊查詢操作示例
這篇文章主要介紹了Python操作mongodb數(shù)據(jù)庫(kù)進(jìn)行模糊查詢操作,結(jié)合實(shí)例形式分析了Python連接MongoDB數(shù)據(jù)庫(kù)及使用正則表達(dá)式進(jìn)行模糊查詢的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06Python3.5裝飾器原理及應(yīng)用實(shí)例詳解
這篇文章主要介紹了Python3.5裝飾器原理及應(yīng)用,結(jié)合具體實(shí)例形式詳細(xì)分析了Python3.5裝飾器的概念、原理、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2019-04-04在Python中如何傳遞任意數(shù)量的實(shí)參的示例代碼
這篇文章主要介紹了在Python中如何傳遞任意數(shù)量的實(shí)參的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor
今天小編就為大家分享一篇tensorflow實(shí)現(xiàn)tensor中滿足某一條件的數(shù)值取出組成新的tensor,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-01-01淺談優(yōu)化Django ORM中的性能問(wèn)題
這篇文章主要介紹了淺談優(yōu)化Django ORM中的性能問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-075行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解
這篇文章主要介紹了5行Python代碼實(shí)現(xiàn)圖像分割的步驟詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05Python+tkinter使用80行代碼實(shí)現(xiàn)一個(gè)計(jì)算器實(shí)例
這篇文章主要介紹了Python+tkinter使用80行代碼實(shí)現(xiàn)一個(gè)計(jì)算器實(shí)例,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01python編寫(xiě)根據(jù)年份判斷生肖實(shí)例
這篇文章主要為大家介紹了python編寫(xiě)根據(jù)年份判斷生肖實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01python密碼學(xué)列置換密碼學(xué)習(xí)
這篇文章主要為大家介紹了python密碼學(xué)列置換密碼學(xué)習(xí)的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Python可變對(duì)象與不可變對(duì)象原理解析
這篇文章主要介紹了Python可變對(duì)象與不可變對(duì)象原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-02-02