|
|
- from imutils.video import VideoStream
- from pyzbar import pyzbar
- import requests
- import imutils
- import cv2
- import urllib3
-
- import socket
- import struct
- import zlib
- import pickle
-
- vs = VideoStream().start()
- dates = []
- reps = 0
- barcodes = None
- prevcode = None
- host = '10.10.26.141'
-
- client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- client_socket.connect((host, 8485))
- connection = client_socket.makefile('wb')
-
- def main():
- global vs
- global dates
- global reps
- global barcodes
- global prevcode
- while True:
- try:
- while (barcodes == None or barcodes == []):
- frame = vs.read()
- frame = imutils.resize(frame, width=400)
- barcodes = pyzbar.decode(frame)
- res, frm = cv2.imencode('.jpg', frame, [int(cv2.IMWRITE_JPEG_QUALITY), 90])
- send_data = zlib.compress(pickle.dumps(frm, 0))
- size = len(send_data)
- client_socket.sendall(struct.pack(">L", size) + data)
- barcodes = pyzbar.decode(frame)
- # loop over the detected barcodes
- for barcode in barcodes:
- (x, y, w, h) = barcode.rect
- cv2.rectangle(frame, (x, y), (x + w, y + h), (0, 0, 255), 2)
-
- barcodeData = barcode.data.decode("utf-8")
- barcodeType = barcode.type
-
- if (barcodeData != prevcode):
- text = "{} ({})".format(barcodeData, barcodeType)
- cv2.putText(frame, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
- 0.5, (0, 0, 255), 2)
-
- print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
- requests.post('https://' + host + ':5000/reduce', data={'id': barcodeData, 'reduce': 5}, verify=False)
- reps += 1
-
- prevcode = barcodeData
- barcodes = None
- except KeyboardInterrupt:
- break
- urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
- main()
- print("[INFO] cleaning up...")
- cv2.destroyAllWindows()
- vs.stop()
|