使用Jinja2模板(或Vue、React等前端框架)建立前端系统,通过浏览器将测试图片或图片的像素数据提交到后端,显示后端返回的结果。可以使用canvas和js实现手写数字输入和显示
时间: 2024-02-19 08:02:58 浏览: 261
以下是使用Jinja2模板建立前端系统,通过浏览器将测试图片或图片的像素数据提交到后端,显示后端返回的结果的代码实现:
```html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Handwritten Digit Recognition</title>
</head>
<body>
<div>
<canvas id="canvas" width="280" height="280" style="border:1px solid #000000;"></canvas>
</div>
<div>
<button onclick="clearCanvas()">Clear</button>
<button onclick="predictDigit()">Predict</button>
</div>
<div>
<img id="result" src="" alt="">
</div>
<script>
var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');
var isDrawing = false;
var lastX;
var lastY;
function startDrawing(e) {
isDrawing = true;
[lastX, lastY] = [e.offsetX, e.offsetY];
}
function draw(e) {
if (!isDrawing) return;
ctx.beginPath();
ctx.moveTo(lastX, lastY);
ctx.lineTo(e.offsetX, e.offsetY);
ctx.stroke();
[lastX, lastY] = [e.offsetX, e.offsetY];
}
function stopDrawing() {
isDrawing = false;
}
function clearCanvas() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
}
function predictDigit() {
var dataURL = canvas.toDataURL('image/png');
var xhr = new XMLHttpRequest();
xhr.open('POST', '/predict');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
if (xhr.status === 200) {
var result = JSON.parse(xhr.responseText)['result'];
document.getElementById('result').src = 'data:image/png;base64,' + result;
}
};
xhr.send(JSON.stringify({'image': dataURL}));
}
canvas.addEventListener('mousedown', startDrawing);
canvas.addEventListener('mousemove', draw);
canvas.addEventListener('mouseup', stopDrawing);
canvas.addEventListener('mouseout', stopDrawing);
</script>
</body>
</html>
```
在上述代码中,我们使用canvas和js实现了手写数字输入和显示功能。用户可以在canvas上手写数字,然后单击“Predict”按钮将手写数字图片提交给后端进行预测。预测结果将在页面上显示出来。在提交图片数据时,我们使用XMLHttpRequest对象将图片数据以JSON格式传递给后端,同时设置了Content-Type头部。当接收到后端返回的预测结果后,我们将其显示在页面上。请注意,此代码仅适用于展示前端页面如何与后端交互,需要在后端编写相应的API接口以接收和处理图片数据。
阅读全文