Capturing images from USB(UVC) webcam on linux machines.
- node >= 0.10.x
- video4linux2 headers
- c and c++ compiler with
-std=c11
and-std=c++11
- gcc >= 4.7
On linux machines:
npm install v4l2camera
- package details: https://npmjs.org/package/v4l2camera
var v4l2camera = require("v4l2camera");
var cam = new v4l2camera.Camera("/dev/video0");
cam.start();
cam.capture(function (success) {
var rgb = cam.toRGB();
require("fs").writeFileSync("result.raw", Buffer(rgb));
cam.stop();
});
For more detail see: examples/*.js (required "pngjs" or native "png" modules)
Initializing API
var cam = new v4l2camera.Camera(device)
cam.formats
: Array of available frame formatsvar format = cam.formats[n]
format.formatName
: Name of pixel format. e.g."YUYV"
format.format
: ID number of pixel formatformat.width
: Frame widthformat.height
: Frame heightformat.interval.numerator
andformat.interval.denominator
: Capturing interval pernumerator/denominator
seconds (e.g. 30fps is 1/30)
cam.configSet(format)
: Set capturewidth
,height
,interval
pernumerator/denominator
sec if the members exist in theformat
objectcam.configGet()
: Get aformat
object of current config
Capturing API
cam.start()
cam.stop(afterStoped())
- call re-
config(format)
or re-start()
inafterStoped()
callback
- call re-
cam.capture(afterCaptured)
: Do cache a current captured frame- call
cam.toRGB()
inafterCaptured(true)
callback
- call
cam.toYUYV()
: Get the cached frame as 8bit int Array of pixels YUYVYUYV...cam.toRGB()
: Get the cached frame as 8bit int Array of pixels RGBRGB...cam.device
cam.width
cam.height
Control API
cam.controls
: Array of the control informationcam.controlGet(id)
: Get int value of the control of theid
(id is one of cam.controls[n].id)cam.controlSet(id, value)
: Set int value of the control of theid
var control = cam.controls[n]
: Control speccontrol.id
: Controlid
for controlGet and controlSetcontrol.name
: Control name stringcontrol.type
:"int"
,"bool"
,"button"
,"menu"
or other typescontrol.max
,control.min
,control.step
: value should bemin <= v
andv <= max
and(v - min) % step === 0
control.default
: default value of the controlcontrol.flags
: Several bool flags of the controlscontrol.menu
: Array of items. A control value is the index of the menu item when type is"menu"
.
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.
- Ubuntu raring armhf on BeagleBone Black with USB Buffalo BSW13K10H
- Ubuntu raring amd64 on Acer Aspire One with its screen facecam
This is a nice resource for understanding how v4l2 works: http://www.jayrambhia.com/blog/capture-v4l2/