• 1000 чтобы открыть два изображения, которые передаются через cli - что-то вроде:
#include <opencv.hpp>
using namespace cv;
int calc(int argc, char** argv) {
Mat img1_temp, img2_temp;
img1_temp = imread(argv[1],-1);
img2_temp = imread(argv[2],-1);
// further processing ...
}
это работает из CLI, например: ./app one.jpg two.jpg
.
При переносе приложения на wasm, я больше не могу использовать интерфейс командной строки для отправки изображения и, конечно, я не могу отправить файл (ы), поэтому у меня появился следующий код (теперь это клиентская сторона JavaScript):
// url is a remote image
const urlToUint8Array = async url => {
const response = await fetch(url);
const buffer = await response.arrayBuffer();
const arr = new Uint8Array(buffer);
return arr;
};
const waModule = await WAModule();
document.getElementById('calculate').addEventListener('click', () => {
waModule.FS.writeFile('in1.ext', one, { encoding: 'binary' });
waModule.FS.writeFile('in2.ext', two, { encoding: 'binary' });
waModule._calc('in1.ext', 'in2.ext')); // this does not work
});
Вопрос, как отправить изображение с JS на wasm. Я также попытался изменить файл C ++, чтобы использовать imdecode
вместо imread
(и перекомпилировать wasm), но я не уверен, что это правильный путь.
Подводя итог, я ищу способ отправки данных изображения для дальнейшего анализа со стороны моего клиента JavaScript в WASM для обработки OpenCV.