toBuffer()
を使用してopenCv行列を変換しようとしていますが、var mat = new cv.Matrix()
で作成した行列でうまく動作しますが、 cv.readImage
を経て、toBufferは()ここでは、何も返さない私のコードは次のとおりです。それが可能だ場合Node.js、OpenCV toBuffer()関数を使って行列をバッファに変換しようとしています
var cv =require('opencv');
var output;
var mat = new cv.Matrix(90,90);
cv.readImage("mona0.png", function(err,im){
if (err) throw err;
if (im.width() < 1 || im.height() < 1) throw new Error('Image has no size');
im.bilateralFilter();
console.log(im);
output = im.clone();
});
var buff = mat.toBuffer();// it works and returns something like <buffer ff d8 ff...>
//var buff = output.toBuffer(); // it doesn't work and returns nothing
console.log(buff);
だから、私はmat
からの出力に似im
からの出力を取得したいと思い、事前にありがとうございます。 (
は、私はあなたが提案したコードを試みたが、それはconsole.log('mat'+buff1)
のresoultがoutputまで表示されませんので、それは動作を停止し.toBuffer
関数を呼び出した後のように思えるので、私はバッファオブジェクトに何かを変換する方法を発見しましたコードは以下です)、このようにして行列の内容ではなく、 '[Matrix 756 * 500]'という文字列を変換します。var buff = new Buffer(output);
を文字列に変換せずに実行しようとすると便利かもしれない別のヒントがありますそのoutput
は文字列または配列でなければなりません。今ではoutput
を配列に変換しようとしています。もう1つのことがあります:.toBufferAsync()が必要ですが、1つの引数が必要です。
var cv =require('opencv');
var fs = require('fs');
var mat = new cv.Matrix(90,90);
cv.readImage("mona0.png", function(err,im){
if (err) throw err;
if (im.width() < 1 || im.height() < 1) throw new Error('Image has no size');
im.bilateralFilter();
console.log(im);
var output = new cv.Matrix(im.width(),im.height())
output = im.clone();
var buff = new Buffer(output.toString('byte64')); // it should work now
console.log('this is buff: ');
console.log(buff);
});
var buff1 = new Buffer(mat.toString('byte64'));// it works and returns something like <buffer ff d8 ff...>
console.log('this is buff1: ')
console.log(buff1)