Как передать переменные из 2 разных функций в одну функцию? - PullRequest
0 голосов
/ 04 ноября 2019

Я работаю над сопоставлением дескрипторов изображений из файла .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);
}

Но я не могу найти способ передать их этой «совпадающей» функции,Может ли кто-нибудь помочь мне с этим, пожалуйста? Или, может быть, есть несколько лучших идей о том, как все это реорганизовать?

Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...