0

我正在为我的项目使用 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和逐个调用函数所花费的时间之差。

4

0 回答 0