将Opencv Mat返回到node.js v8

时间:2017-01-25 12:28:22

标签: javascript c++ node.js opencv v8

如何包装Opencv Mat并将其返回到node.js.谢谢。这就是我所拥有的。

void testFunc(const Nan::FunctionCallbackInfo<v8::Value>& info){
Mat img = imread("test.jpg");
do stuff...
return image "img"
}


void Init(v8::Local<v8::Object> exports) {  
exports->Set(Nan::New("pow").ToLocalChecked(),
             Nan::New<v8::FunctionTemplate>(testFunc)->GetFunction());
}

NODE_MODULE(pow, Init)

1 个答案:

答案 0 :(得分:0)

取决于您想在JavaScript端使用Mat做什么。

  • 如果您只想传递它,可以将其作为&#34;内部字段&#34;在一些对象上;之后使用该对象调用的其他C ++函数可以从那里检索它。
  • 如果你想在JavaScript中使用它,你必须将它转换(例如逐个像素地复制)到一些JavaScript理解的对象 - 一个Uint8ClampedArray可能用于此目的,但它依赖于你的用例。
  • 您还可以创建一个与JS兼容的对象,该对象使用索引拦截器来访问用作其后备存储的Mat。但请注意,跨越API边界的速度相对较慢,因此对于快速代码,一次传递大量数据(如上面的Array建议)通常更有意义,然后避免在热循环内进行API交叉调用。 / LI>