¿Cómo usar OpenCV con Node.js?

OpenCV es una biblioteca de programación multiplataforma de uso gratuito que se utiliza principalmente para la visión por computadora . Está escrito en C/C++. La visión por computadora se usa ampliamente en aplicaciones como detección de rostros, vehículos autónomos, etc. Para usar esto con Node.js, usaremos la biblioteca opencv4nodejs . Opencv4nodejs nos permite usar la biblioteca OpenCV nativa con nuestra aplicación Node.js. Esta es una excelente manera de implementar la visión por computadora en su sitio web existente y una excelente manera de hacer proyectos. 

Ventajas de usar OpenCV con Node.js

  1. Como OpenCV está escrito en C/C++, es muy eficiente y, por lo tanto, no ralentiza el sitio.
  2. La implementación en aplicaciones web que ya tienen un backend de Node.js es muy fácil, por lo que cualquier proyecto puede tener características como reconocimiento facial y visión por computadora.
  3. Use fácilmente clasificadores prediseñados que facilitan la implementación
  4. Es una biblioteca de código abierto, lo que significa que se trabaja y actualiza continuamente para mejorar el rendimiento.

Instalación de los módulos necesarios :

  • Instalación del Módulo Express.
    npm install express
  • Instalación de herramientas de compilación de Windows La instalación de VS Code requiere herramientas compiladas.
    npm install --global windows-build-tools
  • Instalación del módulo socket.io.
    npm install socket.io
  • Instalación del módulo opencv4nodejs.
    npm install --save opencv4nodejs

Primero, crearemos un servidor web express que aloje toda la aplicación, luego usaremos socket.io para actualizar la imagen y luego usaremos OpenCV para leer la imagen.

Ejemplo Este archivo HTML se utilizará para mostrar la imagen.

index.html

<!DOCTYPE html>
<html>
<body>
  <img id="image">
  
  <! --Connecting html page to socket.io -->
  <script src=
"https://cdnjs.cloudflare.com/ajax/libs/socket.io/2.1.1/socket.io.js">
  </script>
  <script>
    // Connecting socket.io to localhost 
       const socket = io.connect('http://localhost:3000');
  
    // listening to the image event in index.js
    socket.on('image', (data)=>{
        console.log('data', data);
  
      // Now we are getting the image and 
      // displaying it via img tag
      const imageEle = document.getElementById('image');
  
      // Also we are decoding the base64 encoding 
      // set in javascript file.
      imageEle.src = data:image/jpeg;base64,${image};
    });
  </script>
</body>
</html>

Este es el archivo de punto de entrada de Node.js que usará express, socket.io y OpenCV para mostrar la imagen.

Nombre del archivo:

index.js

// importing OpenCv library
const cv = require('opencv4nodejs');
const path = require('path')
const express = require('express');
const app = express();
const server = require('http').Server(app);
const io = require('socket.io')(server);
  
// We will now create a video capture object.
const wCap = new cv.VideoCapture(0);
  
//Setting the height and width of object
wCap.set(cv.CAP_PROP_FRAME_WIDTH, 300);
wCap.set(cv.CAP_PROP_FRAME_HEIGHT, 300);
  
// Creating get request simple route
app.get('/', (req, res)=>{
    res.sendFile(path.join(__dirname, 'index.html'));
});
  
// Using setInterval to read the image every one second.
setInterval(()=>{
  
    // Reading image from video capture device
    const frame = wCap.read();
  
    // Encoding the image with base64.
    const image = cv.imencode('.jpg', frame).toString('base64');
    io.emit('image', image);
}, 1000)
  
server.listen(3000);

Ejecute el archivo index.js usando el siguiente comando:

node index.js

Salida: Abra cualquier navegador en nuestra máquina y escriba localhost:3000.

Publicación traducida automáticamente

Artículo escrito por digvijaydhanker y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *