我正在使用JavaScript将.JSON文件中的图像描述符与直播视频中的描述符进行匹配。问题是我需要的变量位于2个单独的函数中,因此我不能在其中使用“返回”。
第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,canvas2d.width,canvas2d.height);
src.data.set(context2d.getImageData(0,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,des);
cv.drawKeypoints(img_color,img2,[0,255,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);
我想在第1部分中使用“ newObj”,在第2部分中使用“ des”:
function matching() {
var bf = new cv.Bfmatcher(cv.NORM_HAMMING);
matches = bf.match(des,newObj);
}
但是我找不到将它们传递给该“匹配”功能的方法。有人可以帮我吗?还是关于如何重组所有这些的更好的主意?
非常感谢您。