如何在 Node js 插件中返回 Opencv Mat 作为缓冲区

问题描述

我使用 How to return cv::Mat in nodejs addon 作为参考在 v8 中编写了一个节点 js 插件。一旦我将接收到的缓冲区写入节点 js 中的 png 文件,我仍然会得到一个损坏的图像。我的原始图像是 png,这是我的代码

节点插件代码(CPP):

SEQUENCE

Node js 代码片段

void myAddOnFunction(const v8::FunctionCallbackInfo<v8::Value>& args)
{
Mat image = cv::imread(image_path);

//Do some processing and return an Opencv Mat    
Mat image_result = processFunction();

unsigned int image_size = image_result.total() * image_result.elemSize();
char* image_char = reinterpret_cast<char*>(image_crop.data);

//Nan::MaybeLocal<v8::Object> imageBuffer = Nan::copyBuffer(image_char,image_size);            
v8::MaybeLocal<v8::Object> imageBuffer = node::Buffer::copy(isolate,image_char,image_size);
args.GetReturnValue().Set(imageBuffer.ToLocalChecked());
}

我使用文件类型模块来检查返回的文件类型,这就是我得到的

let result = addon.myAddOnFunction("Image_Path");
const out_file = path.basename("Output.png");
fs.writeFileSync(out_file,new Buffer.from(result,"binary"));

我哪里出错了?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)