examples/display_camera/fluent-display-camera.js
"use strict";
var Cylon = require("cylon");
Cylon
.robot()
.connection("opencv", { name: "opencv", adaptor: "opencv" })
.device("window", { driver: "window" })
.device("camera", {
driver: "camera",
camera: 0,
haarcascade: __dirname + "/haarcascade_frontalface_alt.xml"
})
.on("ready", function(bot) {
bot.camera.once("cameraReady", function() {
console.log("The camera is ready!");
// We listen for frame ready event, when triggered
// we display the frame/image passed as an argument to
// the listener function, and we tell the window to wait 40 milliseconds
bot.camera.on("frameReady", function(err, im) {
if (err) { console.error(err); }
console.log("FRAMEREADY!");
bot.window.show(im, 40);
});
// Here we have two options to start reading frames from
// the camera feed.
// 1. "As fast as possible": triggering the next frame read
// in the listener for frameReady, if you need video
// as smooth as possible uncomment #bot.camera.readFrame()
// in the listener above and the one below this comment.
// Also comment out the `every 50, bot.camera.readFrame`
// at the end of the comments.
//
// bot.camera.readFrame()
//
// 2. `Use an interval of time`: to try to get a set amount
// of frames per second (FPS), we use an `every 50, myFunction`,
// we are trying to get 1 frame every 50 milliseconds
// (20 FPS), hence the following line of code.
//
setInterval(function() {
bot.camera.readFrame();
}, 50);
});
});
Cylon.start();