-
Notifications
You must be signed in to change notification settings - Fork 3
/
server.py
68 lines (59 loc) · 2.07 KB
/
server.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
from flask import Flask, render_template, request
import cv2
import os
from pyzbar import pyzbar
import simplejson as json
import time
import numpy as np
import uuid
app = Flask(__name__)
def get_objects_from_image(filename):
try:
image = cv2.imread(str(filename))
if len(image.shape) > 2:
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
if image.min() > 0 or image.max() < 255:
image -= image.min()
image = np.array(image * 255.0 / image.max(), dtype='uint8')
decodedObjects = pyzbar.decode(image,
[pyzbar.ZBarSymbol.CODE128, pyzbar.ZBarSymbol.EAN13, pyzbar.ZBarSymbol.QRCODE])
return decodedObjects # json.dumps({"code": 200, decodedObjects})
except Exception as e:
print(e)
return None
@app.route('/', methods=['GET','POST'])
def index():
return render_template('index.html')
@app.route('/test', methods=['GET','POST'])
def test():
try:
start = time.time()
objects = get_objects_from_image("test.jpg")
if objects is None:
return "[]"
timems = int((time.time() - start) * 1000)
return json.dumps({"code": 200, "time_ms": timems, "barcodes": objects})
except Exception as e:
print(e)
return "[]"
@app.route('/barcode', methods=['POST'])
def process_post():
try:
start = time.time()
if request.method == 'POST':
f = list(request.files.values())[0]
FileID = str(uuid.uuid4())
f.save('/dev/shm/' + str(FileID))
objects = get_objects_from_image('/dev/shm/' + str(FileID))
if objects is None:
return "[]"
os.remove('/dev/shm/' + str(FileID))
timems = int((time.time() - start) * 1000)
return json.dumps({"uuid": FileID, "time_ms": timems, "barcodes": objects})
except Exception as e:
print(e)
return "[]"
if __name__ == '__main__':
from waitress import serve
serve(app, host="0.0.0.0", port=80)
#app.run(host='0.0.0.0', debug=True)