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.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")
|
||||
|
||||
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');
|
||||
|
||||
|
||||
});*/
|
||||
});
|
||||
39
src/Image.cc
39
src/Image.cc
@ -26,6 +26,8 @@ Image::Init(Handle<Object> target) {
|
||||
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "save", Save);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "ellipse", Ellipse);
|
||||
NODE_SET_PROTOTYPE_METHOD(constructor, "toBuffer", ToBuffer);
|
||||
|
||||
|
||||
target->Set(String::NewSymbol("Image"), t->GetFunction());
|
||||
|
||||
@ -52,17 +54,18 @@ Image::New(const Arguments &args) {
|
||||
width = args[0]->Uint32Value();
|
||||
height = args[1]->Uint32Value();
|
||||
img = new Image(width, height);
|
||||
} else {
|
||||
if (args[0]->IsString()) {
|
||||
img = new Image(*args[0]);
|
||||
} else {
|
||||
if (Buffer::HasInstance(args[0])){
|
||||
uint8_t *buf = (uint8_t *) Buffer::Data(args[0]->ToObject());
|
||||
unsigned len = Buffer::Length(args[0]->ToObject());
|
||||
img = new Image(buf, len);
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (args[0]->IsString()) {
|
||||
img = new Image(*args[0]);
|
||||
} else if (Buffer::HasInstance(args[0])){
|
||||
uint8_t *buf = (uint8_t *) Buffer::Data(args[0]->ToObject());
|
||||
unsigned len = Buffer::Length(args[0]->ToObject());
|
||||
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());
|
||||
return args.This();
|
||||
@ -75,8 +78,7 @@ Image::Image(int width, int height): 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);
|
||||
};
|
||||
|
||||
@ -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)
|
||||
Handle<Value>
|
||||
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> Ellipse(const v8::Arguments&);
|
||||
|
||||
static Handle<Value> ToBuffer(const v8::Arguments&);
|
||||
|
||||
private:
|
||||
~Image();
|
||||
};
|
||||
|
||||
@ -83,8 +83,13 @@ vows.describe('Smoke Tests OpenCV').addBatch({
|
||||
}
|
||||
|
||||
, "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){
|
||||
assert.equal(new cv.Image("./examples/mona.jpg").empty(), false)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user