Я работаю над сопоставлением дескрипторов изображений из файла .JSON с дескрипторами из потокового видео с использованием JavaScript. Проблема в том, что переменные, которые мне нужны, находятся в 2 отдельных функциях, и я не могу использовать там «return».
Часть 1:
var request = new XMLHttpRequest();
var path = '/path/to/my.json';
const getdata = function () {
var users = [];
users = JSON.parse(this.response);
for (let i = 0; i<3; i++){
var newObj = new cv.Mat(500, 32, cv.CV_8U);
for (let j = 0; j < 500; j++) {
for (let k = 0; k < 32; k++) {
newObj.data[32*j+k] = users[i].descriptors[j][k];
}
}
//I need to extract newObj here
}
}
request.onload = getdata;
request.open('GET', path, true);
request.send();
Часть 2:
function Myorb (){
context2d.drawImage(video, 0, 0, canvas2d.width, canvas2d.height);
src.data.set(context2d.getImageData(0, 0, canvas2d.width, canvas2d.height).data);
cv.cvtColor(src, img_color, cv.COLOR_RGBA2RGB, 0);
var orb = new cv.ORB(1000);
orb.detect(img_color, kp, noArray);
orb.compute(img_color, kp, des);
cv.drawKeypoints(img_color, kp, img2, [0, 255, 0, 255]);
cv.imshow("outputCanvas2d", img2);
const FPS = 30;
let begin = Date.now()
let delay = 1000/FPS - (Date.now() - begin);
setTimeout(Myorb, delay);
}
setTimeout(Myorb, 0);
И я хочу использовать «newObj» из части 1 и «des» из части 2 примерно так:
function matching() {
var bf = new cv.BFMatcher(cv.NORM_HAMMING);
matches = bf.match(des, newObj);
}
Но я не могу найти способ передать их этой «совпадающей» функции,Может ли кто-нибудь помочь мне с этим, пожалуйста? Или, может быть, есть несколько лучших идей о том, как все это реорганизовать?
Большое спасибо.