Spaces:
Running
Running
File size: 2,033 Bytes
d3f340f f443ef8 704d03b 731bcbb d3f340f f443ef8 d3f340f 7b442a9 0a9a758 7b442a9 0a9a758 704d03b 7b442a9 704d03b ea00ccb e064287 ca8e0ee ea00ccb ca8e0ee ea00ccb e0d446b ea00ccb 1152606 7b442a9 ea00ccb 7b442a9 704d03b d3f340f ca8e0ee 7b442a9 ca8e0ee f443ef8 ca8e0ee d3f340f 7b442a9 d3f340f |
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 |
import gradio as gr
import zxingcpp
import numpy as np
from PIL import Image
import cv2
def decode(im,col,tol):
img = cv2.imread(f'{im}')
'''
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blur = cv2.medianBlur(gray, 5)
sharpen_kernel = np.array([[-1,-1,-1], [-1,9,-1], [-1,-1,-1]])
sharpen = cv2.filter2D(blur, -1, sharpen_kernel)
'''
try:
results = zxingcpp.read_barcodes(img)
return results[0].text
except Exception:
#qr_img=Image.open(im).convert("RGBA")
qr_img=Image.open(im)
datas = qr_img.getdata()
newData = []
h1 = col.strip("#")
rgb_tup = tuple(int(h1[i:i+2], 16) for i in (0, 2, 4))
for item in datas:
if item[0] in range(rgb_tup[0]-tol,rgb_tup[0]+tol) and item[1] in range(rgb_tup[1]-tol,rgb_tup[1]+tol) and item[2] in range(rgb_tup[2]-tol,rgb_tup[2]+tol):
newData.append((0,0,0))
else:
newData.append((255,255,255))
qr_img.putdata(newData)
qr_img.save('conv_im.png')
img = cv2.imread('conv_im.png')
try:
results = zxingcpp.read_barcodes(img)
print (results[0].text)
return results[0].text
except Exception:
return "QR Code not Detected \nTry choosing the QR code color using the eyedropper in the Color Picker"
with gr.Blocks() as app:
with gr.Row():
with gr.Column():
in_im = gr.Image(label="QR Image to Decode",type='filepath')
#out_im = gr.Image(type='filepath')
with gr.Column():
with gr.Row():
choose_color = gr.ColorPicker(label="Choose QR color (eyedropper)")
color_tol = gr.Slider(1,255, step=1,value=50,label="Color Detect Tolerance")
dec_btn = gr.Button("Decode QR")
text_out = gr.Textbox(label="Decoded Text")
dec_btn.click(decode,[in_im,choose_color,color_tol],[text_out])
app.queue(concurrency_count=10).launch() |