OpenCV Bindings for node.js
C++ JavaScript Python Shell
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 852 commits behind peterbraden:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.


Build Status

OpenCV bindings for Node.js


You'll need OpenCV 2.3.1 installed.


    npm install opencv

Or to build the repo:

    node-waf configure && node-waf build


Face Detection

    cv.readImage("./examples/test.jpg", function(err, im){
      im.detectObject("./data/haarcascade_frontalface_alt.xml", {}, function(err, faces){  
        for (var i=0;i<faces.length; i++){
          var x = faces[i]
          im.ellipse(x.x + x.width/2, x.y + x.height/2, x.width/2, x.height/2);

API Documentation


The matrix is the most useful base datastructure in OpenCV. Things like images are just matrices of pixels.


    new Matrix(width, height)

Or you can use opencv to read in image files. Supported formats are in the OpenCV docs, but jpgs etc are supported.

    cv.readImage(filename, function(mat){

    cv.readImage(buffer, function(mat){

If you need to pipe data into an image, you can use an imagestream:

    var s = new cv.ImageStream()

    s.on('load', function(matrix){ 



    var mat = new cv.Matrix.Eye(4,4); // Create identity matrix

    mat.get(0,0) // 1

    mat.row(0)  // [1,0,0,0]
    mat.col(4)  // [0,0,0,1]

Image Processing

Object Detection

There is a shortcut method for Viola-Jones Haar Cascade object detection. This can be used for face detection etc.

    mat.detectObject(haar_cascade_xml, opts, function(err, matches){})


This is a WIP. I've never written C++ before so the code may be interesting - if I'm doing stuff wrong please feel free to correct me.