Estoy tratando de obtener una imagen aleatoria del archivo de video de entrada y luego coloco la imagen en opencv para obtener una imagen en escala de grises en la página web.
Obtener una imagen aleatoria de un video se resuelve con la siguiente solución.
¿Javascript cómo extraer el marco del video?
pero ahora estoy atascado en el problema, ¿es imposible dar el archivo de imagen de origen base 64 en opencv (imread, imshow, cv.cvtColor)? Por favor, ayúdame.
''' //const cv = require("./js/opencv"); var video = document.createElement("video"); var image = new Image(); var canvas = document.getElementById("prevImgCanvas"); var canvas_after = document.getElementById("canvas_after"); canvas.width = window.innerWidth; canvas.height = window.innerHeight; video.addEventListener('loadeddata', function() { reloadRandomFrame(); }, false); video.addEventListener('seeked', function() { var context = canvas.getContext('2d'); context.drawImage(video, 0, 0, canvas.width, canvas.height); const dataurl = canvas.toDataURL("image/jpeg") image.src = dataurl; image.onload = function(){ console.log(image); let mat = cv.imread(image); cv.imshow('canvasOutput', mat); mat.delete(); }; }, false); var playSelectedFile = function(event) { var file = this.files[0]; var fileURL = URL.createObjectURL(file); video.src = fileURL; } var input = document.getElementById('fileinput'); input.addEventListener('change', playSelectedFile, false); function reloadRandomFrame() { if (!isNaN(video.duration)) { var rand = Math.round(Math.random() * video.duration * 1000) + 1; video.currentTime = rand / 1000; } } '''let image = new Image() image.src = 'your base64' await new Promise(r => { image.onload = r }) cv.imread(image)