代码拉取完成,页面将自动刷新
同步操作将从 WJG/tflite_train 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
# -*- coding:utf-8 -*-
import io
import json
import os
import time
import numpy as np
import tensorflow as tf
from PIL import Image
import base64
model_path = "model_quantized.tflite" #模型文件地址
chars = '23456789abcdefghjkmpqrstuvwxy' #验证码字符,顺序要与config.json里的一致
# Load TFLite model and allocate tensors.
interpreter = tf.lite.Interpreter(model_path=model_path)
interpreter.allocate_tensors()
# Get input and output tensors.
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
#将验证码数据转换成模型输入格式
def img2input(img, width, height):
tmpe_array = []
for i in range(height):
for j in range(width):
pixel = img.getpixel((j, i))
tmpe_array.append((0.3*pixel[0]+0.6*pixel[1]+0.1*pixel[2])/255)
tmpe_array = np.array(tmpe_array).astype('float32')
input_array = np.expand_dims(tmpe_array, axis=0)
return input_array
#识别验证码
def predict(base64Image):
captcha_image = Image.open(io.BytesIO(base64.b64decode(base64Image)))
image_np_expanded = img2input(captcha_image, 100, 50)
interpreter.set_tensor(input_details[0]['index'], image_np_expanded)
interpreter.invoke()
output_data = interpreter.get_tensor(output_details[0]['index'])
codes = ''
for i in output_data[0]:
codes += chars[i]
return codes
# api网关响应集成
def apiReply(reply, txt=False, content_type='application/json', code=200):
return {
"isBase64Encoded": False,
"statusCode": code,
"headers": {'Content-Type': content_type},
"body": json.dumps(reply, ensure_ascii=False) if not txt else str(reply)
}
#云函数入口
def main_handler(event, context):
return apiReply(
{
"ok": False if not 'base64Image' in event.keys() else True,
"message": "请求参数无效" if not 'base64Image' in event.keys() else predict(event['queryString']['base64Image'])
}
)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。