Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/btsimonh/temp-node-opencv


https://github.com/btsimonh/temp-node-opencv

Last synced: 16 days ago
JSON representation

Awesome Lists containing this project

README

        

# node-opencv

[![Build Status](https://secure.travis-ci.org/peterbraden/node-opencv.svg)](http://travis-ci.org/peterbraden/node-opencv)
[![Coverage](http://codecov.io/github/peterbraden/node-opencv/coverage.svg?branch=master)](https://codecov.io/gh/peterbraden/node-opencv)

[OpenCV](http://opencv.org) bindings for Node.js. OpenCV is
the defacto computer vision library - by interfacing with it natively in node,
we get powerful real time vision in js.

People are using node-opencv to fly control quadrocoptors, detect faces from
webcam images and annotate video streams. If you're using it for something
cool, I'd love to hear about it!

## Install

You'll need OpenCV 2.3.1 or newer installed before installing node-opencv. Note
that OpenCV 3.x is not yet fully supported.

## Specific for macOS
Install OpenCV using brew
```bash
brew tap homebrew/science
brew install opencv
```

## Specific for Windows
1. Download and install OpenCV (Be sure to use a 2.4 version) @
http://opencv.org/releases.html
For these instructions we will assume OpenCV is put at C:\OpenCV, but you can
adjust accordingly.

2. If you haven't already, create a system variable called OPENCV_DIR and set it
to C:\OpenCV\build\x64\vc12

Make sure the "x64" part matches the version of NodeJS you are using.

Also add the following to your system PATH
;%OPENCV_DIR%\bin

3. Install Visual Studio 2013. Make sure to get the C++ components.
You can use a different edition, just make sure OpenCV supports it, and you
set the "vcxx" part of the variables above to match.

4. Download peterbraden/node-opencv fork
git clone https://github.com/peterbraden/node-opencv

5. run npm install

```bash
$ npm install opencv
```

## Examples
Run the examples from the parent directory.

### Face Detection

```javascript
cv.readImage("./examples/files/mona.png", function(err, im){
im.detectObject(cv.FACE_CASCADE, {}, function(err, faces){
for (var i=0;i{
cv.readImage(f, function (err, im) {
// Assume all training photo are named as id_xxx.jpg
let labelNumber = parseInt(path.basename(f).substring(3));
samples.push([labelNumber, im]);
})
})

if ( samples.length > 3 ) {
// There are async and sync version of training method:
// .train(info, cb)
// cb : standard Nan::Callback
// info : [[intLabel,matrixImage],...])
// .trainSync(info)
fr.trainSync(samples);
fr.saveSync('./trained.xml');
}else {
console.log('Not enough images uploaded yet', cvImages)
}
}

function predictIt(fr, f){
cv.readImage(f, function (err, im) {
let result = fr.predictSync(im);
console.log(`recognize result:(${f}) id=${result.id} conf=${100.0-result.confidence}`);
});
}

//using defaults: .createLBPHFaceRecognizer(radius=1, neighbors=8, grid_x=8, grid_y=8, threshold=80)
const fr = new cv.FaceRecognizer();
trainIt(fr);
forEachFileInDir('./_bench', (f) => predictIt(fr, f));
```

## Test

Using [tape](https://github.com/substack/tape). Run with command:

`npm test`.

## Code coverage

Using [istanbul](http://gotwarlost.github.io/istanbul/) and [lcov](http://ltp.sourceforge.net/coverage/lcov.php). Run with command:

`make cover`

Build version of `opencv.node` will be generated, and coverage files will be put in `coverage/` directory. These files can be remvoved automatically by running `make clean`.

## MIT License
The library is distributed under the MIT License - if for some reason that
doesn't work for you please get in touch.