【问题标题】:How to improve OpenCV background drop from two images如何从两个图像中改善 OpenCV 背景下降
【发布时间】:2019-06-07 15:32:59
【问题描述】:

我正在将 OpenCV 与 NodeJS (opencv4nodejs) 一起使用,并且正在尝试从网络摄像头图片中替换背景(一个在框架中有一个没有头部)。

我的代码可以工作,但蒙版的质量没用,大概是因为我需要应用更好的过滤器,但我不确定是什么。

这是我的简单代码

const bgSubtractor = new cv.BackgroundSubtractorMOG2()

const back = cv.imread('/app/src/services/back.jpg').bgrToGray()
const face = cv.imread('/app/src/services/face.jpg').bgrToGray()

bgSubtractor.apply(back)
return bgSubtractor.apply(face)

我已经对它们进行了灰度缩放,仅此而已。我没有附上特定的图像,因为我想看看我是否可以制作通用模型,但目的是用他们的摄像头代替拍摄爆头的人的背景,然后要求退出背景(可能会有所不同)拍摄。不过,我不确定是否有可能仅使用两张图像就可以获得不错的质量。

也许不同会更好?我假设如果我可以正确对齐图像以解决静止图像和减法之间的微小变化,但也许这就是 cv.BackgroundSubtractorMOG2 所做的?我研究了几个使用电影的示例,但结果并不理想。

【问题讨论】:

  • MOG2 背景减法器需要学习。这意味着您必须向它提供几个背景图像,然后它才能正确地从背景中提取前景。首先从你的网络摄像头给它一些背景图像,这样它就可以学习背景,然后给它你的脸。
  • 相关,但不幸的是在 Python 中:stackoverflow.com/questions/26344036/…

标签: javascript node.js opencv


【解决方案1】:

正如@rayryeng 指出的那样,MOG2 Bg Subtractor 需要使用多个背景样本进行训练,以便能够理解背景的实际含义。

这样试试:

  1. 拍摄几张背景图片(非常明显:))
  2. 将 MOG 对象与他们一起提供 学习率 > 0
  3. 以学习率将训练有素的 MOG 应用到您的框架 = 0 检索前景对象

Very useful link that explains everything

【讨论】:

    猜你喜欢
    • 2019-03-20
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    • 2015-02-17
    • 1970-01-01
    相关资源
    最近更新 更多