gpt4 book ai didi

opencv - 从提取的前景中移除阴影

转载 作者:太空宇宙 更新时间:2023-11-03 21:37:39 24 4
gpt4 key购买 nike

我是 OpenCV + C++ + Visual Studio 2012 的新手。现在我需要学习它们。这是背景减法/前景提取的代码,我需要从前景中去除阴影,并将它们包含到背景模型中。

    include opencv2/opencv.hpp    include iostream    include vector

int main(int argc, char *argv[])
{
cv::Mat frame;
cv::Mat back;
cv::Mat fore;
cv::VideoCapture cap(0);

cv::BackgroundSubtractorMOG2 bg;
bg.nmixtures = 3;
bg.bShadowDetection = true;
bg.nShadowDetection = 0; //resolved!
bg.fTau = 0.5; //resolved!


std::vector<std::vector<cv::Point> > contours;

cv::namedWindow("Frame");
cv::namedWindow("Background");

for(;;)
{
cap >> frame;
bg.operator ()(frame,fore);
bg.getBackgroundImage(back);

cv::erode(fore,fore,cv::Mat());
cv::dilate(fore,fore,cv::Mat());

cv::findContours(fore,contours,CV_RETR_EXTERNAL,CV_CHAIN_APPROX_NONE);
cv::drawContours(frame,contours,-1,cv::Scalar(0,0,255),2);

cv::imshow("Frame",frame);
cv::imshow("Background",back);
if(cv::waitKey(30) >= 0) break;
}
return 0;
}

我已经更改了 bshadowdetection = truefalse 但没有任何反应。所以我该怎么做?谢谢。 :)

注意:抱歉我的英语不好。 :D

================

已解决!

如果你想去除前景的阴影,只需要在bg.bShadowDetection = True之后添加下面的代码:

bg.nShadowDetection = 0 和 bg.fTau = 0.5,见上面的代码! :D

如果仍然检测到阴影,您可以调整该值。

bg.fTau = 0.5 意味着如果像素暗 2 倍以上则它不是阴影。

bg.nShadowDetection 默认值为 127。如果你想移除阴影,只需将前景 min.threshold 设置为 127。或者你可以像我一样将 bg.nShadowDetection 设置为 0。

干杯! :D

最佳答案

已解决!

如果你想去除前景的阴影,只需要在bg.bShadowDetection = True之后添加下面的代码:

bg.nShadowDetection = 0 and bg.fTau = 0.5,看问题上面的代码! :D

如果仍然检测到阴影,您可以调整该值。

bg.fTau = 0.5 表示如果像素暗 2 倍以上则它不是阴影。

bg.nShadowDetection 默认值为 127。如果你想移除阴影,只需将前景 min.threshold 设置为 127。或者你可以像我一样将 bg.nShadowDetection 设置为 0。

干杯! :D

关于opencv - 从提取的前景中移除阴影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16352692/

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