Emeritus-21's picture
Update static/app.js
358a9a2 verified
const video = document.getElementById('video');
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
const predictionEl = document.getElementById('prediction');
const confidenceEl = document.getElementById('confidence');
navigator.mediaDevices.getUserMedia({ video: true })
.then(stream => {
video.srcObject = stream;
video.play();
requestAnimationFrame(drawLoop);
})
.catch(err => console.error("Error accessing webcam:", err));
function drawLoop() {
ctx.drawImage(video, 0, 0, canvas.width, canvas.height);
// Draw fixed ROI box
const x = 100, y = 60, w = 400, h = 360;
ctx.strokeStyle = 'red';
ctx.lineWidth = 3;
ctx.strokeRect(x, y, w, h);
requestAnimationFrame(drawLoop);
}
setInterval(() => {
const x = 100, y = 60, w = 400, h = 360;
const roiCanvas = document.createElement('canvas');
roiCanvas.width = w;
roiCanvas.height = h;
const roiCtx = roiCanvas.getContext('2d');
roiCtx.drawImage(video, x, y, w, h, 0, 0, w, h);
const imgData = roiCanvas.toDataURL('image/jpeg');
fetch('/predict', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ image: imgData })
})
.then(res => res.json())
.then(data => {
predictionEl.textContent = data.prediction;
confidenceEl.textContent = data.confidence.toFixed(1);
})
.catch(err => console.error(err));
}, 500);