我正在为我的项目使用 OpenCV4NodeJS-prebuilt 来使用匹配模板。
我创建了两个文件,一个是 Index.js,另一个是 matchTemplate.js
在 Index.js 我调用匹配模板:
const { matchTemplate } = require("./matchTemplate");
...
let a = async function () {
let tm = performance.now();
try {
await Promise.all([
matchTemplate(baseImage, templateR),
matchTemplate(baseImage, templateL)
]).then(result => {
const c = result.map((ob) => (ob.C)) // confidence
top = c[0] > c[1] ? result[0].Y + 8 : result[1].Y + 11
})
} catch (error) {
console.log(error)
}
tm = performance.now() - tm;
console.log(tm)
}
这是 matchTemplate.js
const cv = require('opencv4nodejs-prebuilt')
exports.matchTemplate = async function (inputFile, templateImage) {
// eslint-disable-next-line no-unused-expressions
const matS = await cv.imdecodeAsync(templateImage)
console.time('templateMatching')
const matched = inputFile.matchTemplate(matS, 3)
console.timeEnd('templateMatching')
const minMax = matched.minMaxLoc()
return ({ Y: minMax.maxLoc.y, C: minMax.maxVal })
}
matchTemplate 的日志输出为:
templateMatching: 892.648ms templateMatching: 890.387ms
index.js 的日志输出为:
TemplateMatching: 1824.8019220000133
为什么没有提高就是速度?虽然执行是并行完成的,为什么它仍然花费的时间等于两者花费的时间?
我尝试Promise.all
了通过 gs4fb npm 包调用 ghostscript 并将 PDF 转换为 Image 的方法,并且时间改进在那里。
时间改进是指方法所花费的总时间Promise.all
和逐个调用函数所花费的时间之差。