33 lines
No EOL
808 B
Python
33 lines
No EOL
808 B
Python
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)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
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 |