• Stars
    star
    155
  • Rank 240,864 (Top 5 %)
  • Language
    C
  • License
    MIT License
  • Created about 11 years ago
  • Updated 9 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

node module for capturing an image from USB(UVC) webcam on linux.

node-v4l2camera

Capturing images from USB(UVC) webcam on linux machines.

Requirements

  • node >= 4.x
  • video4linux2 headers
  • c and c++ compiler with -std=c11 and -std=c++14
    • gcc >= 4.9

Install

On linux machines:

npm install v4l2camera

Usage

var v4l2camera = require("v4l2camera");

var cam = new v4l2camera.Camera("/dev/video0");
if (cam.configGet().formatName !== "MJPG") {
  console.log("NOTICE: MJPG camera required");
  process.exit(1);
}
cam.start();
cam.capture(function (success) {
  var frame = cam.frameRaw();
  require("fs").createWriteStream("result.jpg").end(Buffer(frame));
  cam.stop();
});

For more detail see: examples/*.js (required "pngjs" modules)

API

Initializing and Configuration API

  • var cam = new v4l2camera.Camera(device)
    • device: e.g. "/dev/video0"
  • cam.formats: Array of available frame formats
  • var format = cam.formats[n]
    • format.formatName: Name of pixel format. e.g. "YUYV", "MJPG"
    • format.format: ID number of pixel format
    • format.width: Frame width
    • format.height: Frame height
    • format.interval.numerator and format.interval.denominator : Capturing interval per numerator/denominator seconds (e.g. 30fps is 1/30)
  • cam.configSet(format) : Set capture width, height, interval per numerator/denominator sec if the members exist in the format object
  • cam.configGet() : Get a format object of current config

Capturing API (control flow)

  • cam.start()
  • cam.stop(afterStoped)
    • call re-config(format) or re-start() in afterStoped() callback
  • cam.capture(afterCaptured): Do cache a current captured frame
    • use cam.frameRaw() in afterCaptured(true) callback

Capturing API (frame access)

  • cam.frameRaw(): Get the cached raw frame as Uint8Array (YUYU frame is array of YUYV..., MJPG frame is single JPEG compressed data)
  • cam.toYUYV(): Get the cached frame as Uint8Array of pixels YUYVYUYV... (will be deprecated method)
  • cam.toRGB(): Get the cached frame as Uint8Array of pixels RGBRGB... (will be deprecated method)

Capturing API (camera frame info)

  • cam.device: the device file name e.g. "/dev/video0"
  • cam.width: pixel width of the camera
  • cam.height: pixel height of the camera

Control API

  • cam.controls: Array of the control information
  • cam.controlGet(id): Get int value of the control of the id (id is one of cam.controls[n].id)
  • cam.controlSet(id, value): Set int value of the control of the id
  • var control = cam.controls[n]: Control spec
    • control.id: Control id for controlGet and controlSet
    • control.name: Control name string
    • control.type: "int", "bool", "button", "menu" or other types
    • control.max, control.min, control.step: value should be min <= v and v <= max and (v - min) % step === 0
    • control.default: default value of the control
    • control.flags: Several bool flags of the controls
    • control.menu: Array of items. A control value is the index of the menu item when type is "menu".

Build for Development

On linux machines:

cd myproject
mkdir -p node_modules
cd node_modules
git clone https://github.com/bellbind/node-v4l2camera.git v4l2camera
cd v4l2camera
npm install
cd ../..

"build/Release/v4l2camera.node" is exist after the build.

Tested Environments

  • Ubuntu wily armhf on BeagleBone Black with USB Buffalo BSW13K10H
  • Ubuntu wily amd64 on Acer Aspire One with its screen facecam
  • Travis-CI (build only): Build Status

Licenses

MIT and LGPL-3.0 dual

More Repositories

1

using-promise-q

[JavaScript][promise][tutorial] Using promises with "Q"
234
star
2

crxmake-python

python script for building google chrome extension crx
Python
34
star
3

stepbystep-timsort

Understanding timsort features by implementing step by step manner.
Java
30
star
4

chrome-extension-from-bookmarklet-example

Example for convert bookmarklet to chrome extension package
JavaScript
21
star
5

python-simplexquery

simple native XQuery processing module using xqilla.
Python
11
star
6

unicharadata

JavaScript Module for accessing Unicode character data from UnicodeData.txt
JavaScript
7
star
7

remarkjs-pdf

A simple commandline script for converting remark.js slide html to pdf file
JavaScript
6
star
8

python-specfor

A Framework for Behavior Driven Development(BDD) based on stdlib's unittest
Python
4
star
9

XMouseSetting

X-Mouse Setting Tool for Windows7/Vista/XP with .NET 3.5
C#
4
star
10

docker-ruby18-rails2

Dockerfile for ruby-1.8.7 and rails-2.3
3
star
11

DisplayModeSwitcher

Tiny status bar utility for switching display resolution on macos
Swift
2
star
12

altrefcontrol

refControl addon Alternative for firefox4
JavaScript
2
star
13

jquery-selection-texts

jQuery plugin: selectionTexts
JavaScript
2
star
14

hellounite

A simple example of OperaUnite Service gadget
JavaScript
2
star
15

rails-plugin-schemaless

Rails generator for models with flex fields.
Ruby
1
star
16

AlcSearch

Android Intent Example: send selected text to Space ALC eijiro page
Java
1
star
17

bellbind.github.io

github pages
HTML
1
star
18

pukiwiki

pukiwiki : patches for php-5.4.6 applied to cvs pukiwiki (EUC-JP version)
PHP
1
star