mirror of
https://github.com/peterbraden/node-opencv.git
synced 2025-12-08 19:45:55 +00:00
WIP on images and buffers
This commit is contained in:
parent
361194e4d8
commit
f02ec18e2b
@ -4,9 +4,9 @@ var cv = require('./lib/opencv')
|
|||||||
console.log(cv.version)
|
console.log(cv.version)
|
||||||
|
|
||||||
//console.log(cv.Image.prototype);
|
//console.log(cv.Image.prototype);
|
||||||
/*
|
|
||||||
|
|
||||||
var im = new cv.Image("./examples/test.jpg")
|
|
||||||
|
var im = new cv.Image("./examples/t2.jpg")
|
||||||
, face_cascade = new cv.CascadeClassifier("./examples/haarcascade_frontalface_alt.xml")
|
, face_cascade = new cv.CascadeClassifier("./examples/haarcascade_frontalface_alt.xml")
|
||||||
|
|
||||||
var faces = face_cascade.detectMultiScale(im, function(err, faces){
|
var faces = face_cascade.detectMultiScale(im, function(err, faces){
|
||||||
@ -17,4 +17,4 @@ var faces = face_cascade.detectMultiScale(im, function(err, faces){
|
|||||||
im.save('./out.jpg');
|
im.save('./out.jpg');
|
||||||
|
|
||||||
|
|
||||||
});*/
|
});
|
||||||
27
src/Image.cc
27
src/Image.cc
@ -26,6 +26,8 @@ Image::Init(Handle<Object> target) {
|
|||||||
|
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "save", Save);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "save", Save);
|
||||||
NODE_SET_PROTOTYPE_METHOD(constructor, "ellipse", Ellipse);
|
NODE_SET_PROTOTYPE_METHOD(constructor, "ellipse", Ellipse);
|
||||||
|
NODE_SET_PROTOTYPE_METHOD(constructor, "toBuffer", ToBuffer);
|
||||||
|
|
||||||
|
|
||||||
target->Set(String::NewSymbol("Image"), t->GetFunction());
|
target->Set(String::NewSymbol("Image"), t->GetFunction());
|
||||||
|
|
||||||
@ -52,17 +54,18 @@ Image::New(const Arguments &args) {
|
|||||||
width = args[0]->Uint32Value();
|
width = args[0]->Uint32Value();
|
||||||
height = args[1]->Uint32Value();
|
height = args[1]->Uint32Value();
|
||||||
img = new Image(width, height);
|
img = new Image(width, height);
|
||||||
} else {
|
} else if (args[0]->IsString()) {
|
||||||
if (args[0]->IsString()) {
|
|
||||||
img = new Image(*args[0]);
|
img = new Image(*args[0]);
|
||||||
} else {
|
} else if (Buffer::HasInstance(args[0])){
|
||||||
if (Buffer::HasInstance(args[0])){
|
|
||||||
uint8_t *buf = (uint8_t *) Buffer::Data(args[0]->ToObject());
|
uint8_t *buf = (uint8_t *) Buffer::Data(args[0]->ToObject());
|
||||||
unsigned len = Buffer::Length(args[0]->ToObject());
|
unsigned len = Buffer::Length(args[0]->ToObject());
|
||||||
img = new Image(buf, len);
|
img = new Image(buf, len);
|
||||||
|
|
||||||
|
if (img->mat.empty()){
|
||||||
|
return v8::ThrowException(v8::Exception::TypeError(v8::String::New("Error loading file")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
img->Wrap(args.This());
|
img->Wrap(args.This());
|
||||||
return args.This();
|
return args.This();
|
||||||
@ -75,8 +78,7 @@ Image::Image(int width, int height): ObjectWrap() {
|
|||||||
|
|
||||||
|
|
||||||
Image::Image(uint8_t* buf, unsigned len): ObjectWrap() {
|
Image::Image(uint8_t* buf, unsigned len): ObjectWrap() {
|
||||||
cv::Mat *mbuf = new cv::Mat(len, 1, CV_8UC1);
|
cv::Mat *mbuf = new cv::Mat(len, 1, CV_8UC1, buf);
|
||||||
|
|
||||||
mat = cv::imdecode(*mbuf, -1);
|
mat = cv::imdecode(*mbuf, -1);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -119,6 +121,17 @@ Image::Save(const v8::Arguments& args){
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Handle<Value>
|
||||||
|
Image::ToBuffer(const v8::Arguments& args){
|
||||||
|
HandleScope scope;
|
||||||
|
//Buffer *buf = Buffer::New(mat->length);
|
||||||
|
//cv::imencode('.jpg', mat, vec, CV_IMWRITE_JPEG_QUALITY 90)
|
||||||
|
|
||||||
|
return scope.Close(Number::New(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ellipse(x, y, wid, height, angle, startangle, endangle, color, thickness, linetype, shift)
|
// ellipse(x, y, wid, height, angle, startangle, endangle, color, thickness, linetype, shift)
|
||||||
Handle<Value>
|
Handle<Value>
|
||||||
Image::Ellipse(const v8::Arguments& args){
|
Image::Ellipse(const v8::Arguments& args){
|
||||||
|
|||||||
@ -19,6 +19,8 @@ class Image: public node::ObjectWrap {
|
|||||||
static Handle<Value> Save(const v8::Arguments&);
|
static Handle<Value> Save(const v8::Arguments&);
|
||||||
static Handle<Value> Ellipse(const v8::Arguments&);
|
static Handle<Value> Ellipse(const v8::Arguments&);
|
||||||
|
|
||||||
|
static Handle<Value> ToBuffer(const v8::Arguments&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
~Image();
|
~Image();
|
||||||
};
|
};
|
||||||
|
|||||||
@ -83,9 +83,14 @@ vows.describe('Smoke Tests OpenCV').addBatch({
|
|||||||
}
|
}
|
||||||
|
|
||||||
, "constructor(buffer)" : function(cv){
|
, "constructor(buffer)" : function(cv){
|
||||||
assert.ok(new cv.Image(fs.readFileSync('./examples/mona.jpg')));
|
var im = new cv.Image(fs.readFileSync('./examples/mona.jpg'))
|
||||||
|
assert.ok(im);
|
||||||
|
assert.equal(im.width, 500);
|
||||||
|
assert.equal(im.height, 756)
|
||||||
|
assert.equal(im.empty(), false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
, "inherits from matrix": function(cv){
|
, "inherits from matrix": function(cv){
|
||||||
assert.equal(new cv.Image("./examples/mona.jpg").empty(), false)
|
assert.equal(new cv.Image("./examples/mona.jpg").empty(), false)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user