毕业设计(水表识别)后端知识整理
# 毕业设计(水表识别)后端知识整理
大学毕业设计后端项目,主要功能是水表识别。
水表识别的代码参考了这个项目 (opens new window)(如果需要识别代码,请参考这个项目,我写的项目目前不打算公开)
# 技术点
- 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': '上传文件类型不支持',
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 下载示例图片接口
这个接口就是简单的下载接口
@app.route('/download/demo', methods=['GET'])
def download():
directory = os.getcwd()
return send_from_directory(directory, 'assets/demo.zip', as_attachment=True)
1
2
3
4
2
3
4
# 识别主函数
这也就是接口调用的函数,具体的里面的识别部分可以参考最上面提到的项目
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
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 总结
整个毕业设计最重要的部分,其实都是参考了别人的项目,这里再次感谢这位作者 (opens new window)。
主要就是利用Flask建立起后端框架,能够让前后端联动。
上次更新: 2023/06/01, 12:40:50