毕业设计(水表识别)后端知识整理 #
大学毕业设计后端项目,主要功能是水表识别。
水表识别的代码参考了这个项目(如果需要识别代码,请参考这个项目,我写的项目目前不打算公开)
技术点 #
- Flask
- TensorFlow
部分实现 #
识别接口 #
识别接口主要是上传图片,然后将图片传给识别函数,并且以一定的格式返回识别结果
ALLOWED_EXTENSIONS = {'jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF'}
@app.route('/recognize', methods=['POST'])
def recognizeApi():
file = request.files.get('file')
if file and '.' in file.filename and file.filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS:
data = file.read()
imgRaw = str(base64.b64encode(data), encoding='utf-8')
resStr, imgCrop = recognize(data)
return jsonify({
'code': 0,
'message': '识别成功',
'imgRaw': imgRaw,
'imgCrop': imgCrop,
'resStr': resStr
})
else:
return jsonify({
'code': 1,
'message': '上传文件类型不支持',
})
ALLOWED_EXTENSIONS = {'jpg', 'jpeg', 'png', 'gif', 'JPG', 'JPEG', 'PNG', 'GIF'}
@app.route('/recognize', methods=['POST'])
def recognizeApi():
file = request.files.get('file')
if file and '.' in file.filename and file.filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS:
data = file.read()
imgRaw = str(base64.b64encode(data), encoding='utf-8')
resStr, imgCrop = recognize(data)
return jsonify({
'code': 0,
'message': '识别成功',
'imgRaw': imgRaw,
'imgCrop': imgCrop,
'resStr': resStr
})
else:
return jsonify({
'code': 1,
'message': '上传文件类型不支持',
})
下载示例图片接口 #
这个接口就是简单的下载接口
@app.route('/download/demo', methods=['GET'])
def download():
directory = os.getcwd()
return send_from_directory(directory, 'assets/demo.zip', as_attachment=True)
@app.route('/download/demo', methods=['GET'])
def download():
directory = os.getcwd()
return send_from_directory(directory, 'assets/demo.zip', as_attachment=True)
识别主函数 #
这也就是接口调用的函数,具体的里面的识别部分可以参考最上面提到的项目
def recognize(data):
num_region_bytes = get_num_region(BytesIO(data)) # 识别出字轮区域
num_region = Image.fromarray(num_region_bytes) # 转换成Image格式
res_number = get_wm_num(num_region) # 识别字轮区域的数字
res_str = "{:6.0f}".format(res_number)
# 将字轮区域的图片转为base64编码
buffered = BytesIO()
num_region.save(buffered, format="PNG")
num_region_base64 = str(base64.b64encode(buffered.getvalue()), encoding='utf-8')
return res_str, num_region_base64
def recognize(data):
num_region_bytes = get_num_region(BytesIO(data)) # 识别出字轮区域
num_region = Image.fromarray(num_region_bytes) # 转换成Image格式
res_number = get_wm_num(num_region) # 识别字轮区域的数字
res_str = "{:6.0f}".format(res_number)
# 将字轮区域的图片转为base64编码
buffered = BytesIO()
num_region.save(buffered, format="PNG")
num_region_base64 = str(base64.b64encode(buffered.getvalue()), encoding='utf-8')
return res_str, num_region_base64
总结 #
整个毕业设计最重要的部分,其实都是参考了别人的项目,这里再次感谢这位作者。
主要就是利用Flask建立起后端框架,能够让前后端联动。