basics of goodFeaturesToTrack

This commit is contained in:
Peter Braden 2012-09-19 12:26:46 -07:00
parent 946e1fc344
commit 48ab05f624
4 changed files with 47 additions and 3 deletions

View File

@ -1,6 +1,6 @@
#!/bin/bash
node-gyp rebuild && echo '-- Compiled OK --
' && node smoketest.js && echo '-- Smoke Done, running tests --
' && node smoketest.js #&& echo '-- Smoke Done, running tests --
' && npm test
#' && npm test

View File

@ -1,5 +1,5 @@
var cv = require('./lib/opencv')
/*
new cv.VideoCapture(0).read(function(mat){
mat.resize(200,100)
@ -15,3 +15,15 @@ new cv.VideoCapture(0).read(function(mat){
})
})
*/
cv.readImage("./examples/mona.png", function(err, im){
var features = im.goodFeaturesToTrack();
for (var i=0;i<features.length; i++){
var x = features[i]
im.ellipse(x[0] - 5, x[1] -5, 10, 10);
}
console.log(features)
im.save('./out.jpg');
});

View File

@ -56,6 +56,8 @@ Matrix::Init(Handle<Object> target) {
NODE_SET_PROTOTYPE_METHOD(constructor, "findContours", FindContours);
NODE_SET_PROTOTYPE_METHOD(constructor, "drawContour", DrawContour);
NODE_SET_PROTOTYPE_METHOD(constructor, "drawAllContours", DrawAllContours);
NODE_SET_PROTOTYPE_METHOD(constructor, "goodFeaturesToTrack", GoodFeaturesToTrack);
NODE_SET_METHOD(constructor, "Eye", Eye);
@ -555,6 +557,34 @@ Matrix::DrawAllContours(const v8::Arguments& args) {
return Undefined();
}
Handle<Value>
Matrix::GoodFeaturesToTrack(const v8::Arguments& args) {
HandleScope scope;
Matrix *self = ObjectWrap::Unwrap<Matrix>(args.This());
std::vector<cv::Point2f> corners;
cv::Mat gray;
cvtColor(self->mat, gray, CV_BGR2GRAY);
equalizeHist(gray, gray);
cv::goodFeaturesToTrack(gray, corners, 500, 0.01, 10);
v8::Local<v8::Array> arr = v8::Array::New(corners.size());
for (unsigned int i=0; i<corners.size(); i++){
v8::Local<v8::Array> pt = v8::Array::New(2);
pt->Set(0, Number::New((double) corners[i].x));
pt->Set(1, Number::New((double) corners[i].y));
arr->Set(i, pt);
}
return scope.Close(arr);
}
cv::Scalar setColor(Local<Object> objColor) {

View File

@ -84,5 +84,7 @@ class Matrix: public node::ObjectWrap {
JSFUNC(DrawContour)
JSFUNC(DrawAllContours)
JSFUNC(GoodFeaturesToTrack)
};