導(dǎo)? 讀
????本文主要介紹使用Python和OpenCV搭建自己的一維碼和QRCode掃描儀(步驟 + 源碼)。
項(xiàng)目簡介
????本文我們將創(chuàng)建一個(gè)程序來掃描圖像中的二維碼和條形碼。對于這個(gè)程序,我們需要三個(gè)包,分別是OpenCV、NumPy和pyzbar。大多數(shù) Python 程序員都熟悉 OpenCV 和 Numpy 庫。OpenCV 是一個(gè)開源計(jì)算機(jī)視覺和機(jī)器學(xué)習(xí)庫。它是一個(gè)有用的圖像處理庫。我們在項(xiàng)目中使用這個(gè)庫來處理設(shè)備捕獲的視頻中的每一幀。我們在這里使用 Numpy,因?yàn)?pyzbar 可與 OpenCV / numpy ndarrays 配合使用。而 pyzbar 庫用于從給定圖像中讀取條形碼和 QR 碼。它支持 EAN-13/UPC-A、UPC-E、EAN-8、Code 128、Code 39、Interleaved 2 of 5 和 QR 碼。這是對我們的項(xiàng)目和庫的簡短介紹,下面將詳細(xì)介紹實(shí)現(xiàn)步驟。
? ? ??
實(shí)現(xiàn)步驟
? ??【1】安裝需要的庫。主要有OpenCV, Numpy, PyZbar。
#安裝OpenCV
pip install opencv-python
??????
#安裝pyzbar
pip install pyzbar
???????
#安裝numpy
pip install numpy
? ??【2】導(dǎo)入所有需要的庫。代碼如下:???????
import cv2
import numpy as np
from pyzbar.pyzbar import decode
? ??【3】從攝像頭設(shè)備捕獲視頻。代碼如下:???????
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
cv2.imshow('image', frame)
code = cv2.waitKey(10)
if code == ord('q'):
break
? ??【4】創(chuàng)建解碼器函數(shù),用于解碼給定圖像中的條形碼和QRCode。代碼如下:???????
def decoder(image):
gray_img = cv2.cvtColor(image,0)
barcode = decode(gray_img)
for obj in barcode:
points = obj.polygon
(x,y,w,h) = obj.rect
pts = np.array(points, np.int32)
pts = pts.reshape((-1, 1, 2))
cv2.polylines(image, [pts], True, (0, 255, 0), 3)
barcodeData = obj.data.decode("utf-8")
barcodeType = obj.type
string = "Data: " + str(barcodeData) + " | Type: " + str(barcodeType)
cv2.putText(frame, string, (x,y), cv2.FONT_HERSHEY_SIMPLEX,0.8,(0,0,255), 2)
print("Barcode: "+barcodeData +" | Type: "+barcodeType)
????該函數(shù)獲取圖像,然后從圖像中識別 QR 碼和條形碼,并對其值進(jìn)行解碼。這里的條形碼是由解碼函數(shù)識別的條形碼和QRcode對象的列表。每個(gè)對象包含矩形、多邊形、數(shù)據(jù)、類型等屬性。矩形和多邊形屬性給出了條形碼和QR碼的位置。
????完整代碼和檢測效果:???????文章來源:http://www.zghlxwxcb.cn/news/detail-825997.html
import cv2
import numpy as np
from pyzbar.pyzbar import decode
def decoder(image):
gray_img = cv2.cvtColor(image,0)
barcode = decode(gray_img)
for obj in barcode:
points = obj.polygon
(x,y,w,h) = obj.rect
pts = np.array(points, np.int32)
pts = pts.reshape((-1, 1, 2))
cv2.polylines(image, [pts], True, (0, 255, 0), 3)
barcodeData = obj.data.decode("utf-8")
barcodeType = obj.type
string = "Data " + str(barcodeData) + " | Type " + str(barcodeType)
cv2.putText(frame, string, (x,y), cv2.FONT_HERSHEY_SIMPLEX,0.8,(255,0,0), 2)
print("Barcode: "+barcodeData +" | Type: "+barcodeType)
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
decoder(frame)
cv2.imshow('Image', frame)
code = cv2.waitKey(10)
if code == ord('q'):
break
文章來源地址http://www.zghlxwxcb.cn/news/detail-825997.html
到了這里,關(guān)于用Python和OpenCV搭建自己的一維碼和QRCode掃描儀(步驟 + 源碼)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!