December 20, 2023

nodejs webcam

Для получения изображения с веб-камеры в Node.js вам понадобится использовать библиотеку, позволяющую взаимодействовать с веб-камерой и захватывать изображения. Одним из популярных вариантов для этой цели является библиотека "node-webcam".

Вот пример использования библиотеки "node-webcam" для получения изображения с веб-камеры:

const NodeWebcam = require( "node-webcam" );

// Настройки для захвата изображения с веб-камеры
const opts = {
  width: 1280,
  height: 720,
  quality: 100,
  delay: 0,
  saveShots: true,
  output: "jpeg",
  device: false,
  callbackReturn: "location",
  verbose: false
};

// Создание экземпляра веб-камеры
const Webcam = NodeWebcam.create( opts );

// Захват изображения с веб-камеры
Webcam.capture( "test_picture", (err, data) => {
  if (err) {
    console.error(err);
  } else {
    console.log("Изображение успешно захвачено:", data);
  }
});

Конечно, вот пример простого скрипта сервера на Node.js, который использует Express.js для создания сервера и позволяет получить изображение с веб-камеры:

const express = require('express');
const app = express();
const path = require('path');

// Устанавливаем папку для статических файлов
app.use(express.static('public'));

// Маршрут для загрузки страницы с видеопотоком с веб-камеры
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'index.html'));
});

// Запуск сервера на порте 3000
app.listen(3000, () => {
  console.log('Сервер запущен на порте 3000');
});

Создайте файл index.html в папке public с содержимым для отображения видеопотока с веб-камеры и кнопки для захвата изображения.

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Захват изображения с веб-камеры</title>
</head>
<body>
  <h1>Веб-камера</h1>
  <video id="webcam-video" autoplay></video>
  <button id="capture-button">Захватить изображение</button>
  <canvas id="captured-image"></canvas>
  <script src="main.js"></script>
</body>
</html>

Создайте файл main.js для обработки захвата изображения с веб-камеры.

// Получаем доступ к видеопотоку с веб-камеры
navigator.mediaDevices.getUserMedia({ video: true })
  .then(stream => {
    const video = document.getElementById('webcam-video');
    video.srcObject = stream;
  })
  .catch(error => {
    console.error('Ошибка при получении доступа к веб-камере:', error);
  });

// Захват изображения с веб-камеры
const captureButton = document.getElementById('capture-button');
captureButton.addEventListener('click', () => {
  const video = document.getElementById('webcam-video');
  const canvas = document.getElementById('captured-image');
  canvas.width = video.videoWidth;
  canvas.height = video.videoHeight;
  canvas.getContext('2d').drawImage(video, 0, 0, canvas.width, canvas.height);
});

Этот пример создает простой сервер на Node.js с использованием Express.js, который позволяет получить изображение с веб-камеры.