Я пытаюсь захватить видео с веб-камеры на стороне клиента и отправить кадры на сервер для обработки. Я новичок ie в JS и у меня возникли некоторые проблемы. Я пытался использовать OpenCV. js для получения данных, но я не понимал, как их получить, в Python мы можем сделать
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
, а кадр представляет собой 2d-массив с изображение, но как я могу получить каждый кадр (как 2d массив) для отправки с использованием OpenCV. js?
У меня есть этот код на стороне клиента:
<script type="text/javascript">
function onOpenCvReady() {
cv['onRuntimeInitialized'] = () => {
var socket = io('http://localhost:5000');
socket.on('connect', function () {
console.log("Connected...!", socket.connected)
});
const video = document.querySelector("#videoElement");
video.width = 500;
video.height = 400;
if (navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({ video: true })
.then(function (stream) {
video.srcObject = stream;
video.play();
})
.catch(function (err0r) {
console.log(err0r)
console.log("Something went wrong!");
});
}
let src = new cv.Mat(video.height, video.width, cv.CV_8UC4);
let cap = new cv.VideoCapture(video);
const FPS = 15;
function processVideo() {
let begin = Date.now();
cap.read(src);
handle_socket(src['data']);
// schedule next one.
let delay = 1000 / FPS - (Date.now() - begin);
setTimeout(processVideo, delay);
}
// schedule first one.
setTimeout(processVideo, 0);
function handle_socket(src) {
socket.emit('event', { info: 'I\'m connected!', data: src });
}
}
}
</script>