|
|
- from flask import Flask, jsonify, request, abort,Response
- from multiprocessing import Process
- from PIL import Image
- from io import BytesIO
- from imutils.video import VideoStream
-
- import requests
- import cv2
- import pickle
- import base64
- import json
- from pyzbar import pyzbar
- import subprocess
- import urllib3
- import imutils
-
- urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
-
- app = Flask(__name__)
- user = {}
- image = None
-
- def im2str(im):
- crop_img = Image.fromarray(im, "RGB")
- buffered = BytesIO()
- crop_img.save(buffered, format="JPEG")
- img = base64.b64encode(buffered.getvalue()).decode("ascii")
- return img
-
- vs=VideoStream().start()
- barcodeData_prev = 0
-
- @app.route('/get')
- def get_qr():
- global user
- global image
- global barcodeData_prev
-
- frame = vs.read()
- img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
- gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
- barcode = pyzbar.decode(gray)
- if len(barcode) > 0:
- barcode = barcode[0]
- (x, y, w, h) = barcode.rect
- barcodeData = barcode.data.decode("utf-8")
- barcodeType = barcode.type
- if barcodeData_prev == 0 or barcodeData_prev != barcodeData:
- barcodeData_prev = barcodeData
- r = requests.get('https://192.168.2.203:5000/users/{}'.format(barcodeData), verify=False)
- user = json.loads(r.text)
- text = "{} ({})".format(barcodeData, barcodeType)
- cv2.putText(img, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
- 0.5, (255, 0, 0), 2)
- cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
- else:
- user = {}
- result = subprocess.check_output(['vcgencmd', 'measure_temp'])
- temp = result.split("=")[1][:-2] +"C"
- image = im2str(img)
- resp = Response(json.dumps({"user":user,"img":image,"temp":temp}))
- resp.headers['Access-Control-Allow-Origin'] = '*'
-
- return resp
-
-
- app.run(host='0.0.0.0', port=3000)
|