gpt4 book ai didi

c++ - 如何使 openCV 背景减法 KNN 算法持续更长时间,跟踪不动的前景对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:27 25 4
gpt4 key购买 nike

我正在尝试减去这 block 积木。 orange building brick.

为此,我使用了 opencv 3.0 提供的 KNN 算法。为了初始化背景模型,我使用了 40 个没有砖 block 的帧。

总的来说,它工作得很好。(带阴影的砖) enter image description here

唯一的问题是算法在第 58 帧左右开始松动砖 block

(图片显示第 62 帧)

enter image description here

在第 64 帧之后,我只得到黑色图像。我知道如果砖 block 会移动就不会发生这种情况,但不幸的是有很长的序列它不会移动。

有人知道解决这个问题的方法吗?

PS:我试过玩弄

的历史参数
cv::createBackgroundSubtractorKNN(int history,double Threshold, bool detectShadows= true)

但是history = 500 or history = 500000没有区别

最佳答案

一个简单但缓慢的解决方案是每五帧重新初始化背景模型。

for (size_t i = 0; i < imageList.size(); i++){
if (i % 5 == 0){
for (auto& it : backgroundList){

string nextFrameFilename(it.string());
frame = cv::imread(nextFrameFilename);
pMOG->apply(frame, fgMaskMOG2);
imshow("Frame", frame);
imshow("FG Mask MOG 2", fgMaskMOG2);
keyboard = cv::waitKey(30);
}
}
}

关于c++ - 如何使 openCV 背景减法 KNN 算法持续更长时间,跟踪不动的前景对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33018856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com