WIP on image from buffer

This commit is contained in:
Peter Braden 2012-01-19 22:39:05 -08:00
parent a62658c28b
commit b038343ad4
4 changed files with 20 additions and 9 deletions

View File

@ -4,7 +4,7 @@ var cv = require('./lib/opencv')
console.log(cv.version)
var im = new cv.Image("./examples/mona.jpg")
var im = new cv.Image("./examples/test.jpg")
, face_cascade = new cv.CascadeClassifier("./examples/haarcascade_frontalface_alt.xml")
var faces = face_cascade.detectMultiScale(im, function(err, faces){
@ -15,4 +15,4 @@ var faces = face_cascade.detectMultiScale(im, function(err, faces){
im.save('./out.jpg');
}, 1.1, 2, [30, 30]);
});

View File

@ -22,7 +22,6 @@ Image::Init(Handle<Object> target) {
NODE_SET_PROTOTYPE_METHOD(constructor, "save", Save);
NODE_SET_PROTOTYPE_METHOD(constructor, "ellipse", Ellipse);
/*proto->SetAccessor(String::NewSymbol("source"), GetSource, SetSource);
proto->SetAccessor(String::NewSymbol("complete"), GetComplete);
@ -48,7 +47,15 @@ Image::New(const Arguments &args) {
height = args[1]->Uint32Value();
img = new Image(width, height);
} else {
img = new Image(*args[0]);
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);
}
}
}
img->Wrap(args.This());
@ -56,11 +63,15 @@ Image::New(const Arguments &args) {
};
Image::Image(int width, int height): ObjectWrap() {
};
Image::Image(cv::Mat m): ObjectWrap() {
mat = m;
Image::Image(uint8_t* buf, unsigned len): ObjectWrap() {
cv::Mat *mbuf = new cv::Mat(len, 1, CV_8UC1);
mat = cv::imdecode(*mbuf, -1);
};

View File

@ -11,9 +11,8 @@ class Image: public node::ObjectWrap {
Image(int width, int height);
Image(v8::Value* src);
Image(cv::Mat m);
Image(uint8_t* buf, unsigned len);
static Handle<Value> GetWidth(Local<String> prop, const AccessorInfo &info);
static Handle<Value> GetHeight(Local<String> prop, const AccessorInfo &info);

View File

@ -5,6 +5,7 @@
#include <node.h>
#include <node_object_wrap.h>
#include <node_version.h>
#include <node_buffer.h>
#include <cv.h>
#include <highgui.h>
#include <string.h>