OpenCV Bindings for node.js
C++ JavaScript Python Shell
Pull request Compare This branch is 712 commits behind peterbraden:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
data Merge github.com:talvarez/node-opencv Jun 19, 2012
examples New rectangle function, new example and added std namespace fixing th… Jun 22, 2012
lib
src
test
.gitignore Added videocapture working (libuv), some examples, more methods to Ma… Jun 18, 2012
.travis.yml Merge github.com:talvarez/node-opencv Jun 19, 2012
README.md
TODO
binding.gyp Merge github.com:talvarez/node-opencv Jun 19, 2012
build.sh
doc
index.html
package.json
smoke.sh
smoketest.js
todo
wscript Added videocapture working (libuv), some examples, more methods to Ma… Jun 18, 2012

README.md

node-opencv

Build Status

OpenCV bindings for Node.js

Install

You'll need OpenCV installed. I'm using v2.2 because I couldn't get 2.3 to compile, but it should theoretically work with 2.3

Then:

    npm install opencv

Or to build the repo:

    node-waf configure && node-waf build

Examples

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);
        }
        im.save('./out.jpg');   

      });
    })

API Documentation

Matrix

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

Creation

    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){ 
      ...
    }) 

    fs.createReadStream('./examples/test.jpg').pipe(s);        

Accessors

    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){})

WIP

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.