gpt4 book ai didi

opencv - Absdiff在灰度而不是BGR色彩空间上工作

转载 作者:行者123 更新时间:2023-12-02 16:40:54 29 4
gpt4 key购买 nike

我面临的困难是实时背景扣除。尝试了许多方法,但无济于事。我要实现的任务是用相机正在流式传输的实时视频删除相机捕捉的背景图像。
absdiff是我目前用于背景扣除的方法,因为到目前为止看来效果最好。

我的代码如下所示:

 while(1)
{
capture>>imagef;
imshow("image with foreground", imagef);
imagef.convertTo(imagef, CV_8UC3);
//cvtColor(imagef, imagef, CV_BGR2GRAY);

absdiff(imagef,imageb, imageFinal); //imageb is the background image
imshow("after diff", imageFinal);


//cvtColor(imageFinal, imageFinal, CV_BGR2GRAY); //change to grayscale


threshold(imageFinal, imageFinal, 20, 255, CV_THRESH_BINARY); // change to grayscale


imshow("Camera Window",imageFinal); //show video


int key = cvWaitKey(10); //Capture Keyboard stroke
if (char(key) == 27)
{
break; //If you hit ESC key loop will break.
}

}

但是,无论摄像机视频中是否引入了新图像,此代码都将返回空白图像。

请注意,如果我取消注释 cvtColor,则在处理之前将imagef(视频帧)和imageb(静态图像)都转换为灰度,则我可以检索新图像之间的差异,但是,由于强度相似,会造成信息丢失,但是如果我降低阈值,则视频具有水平移动线(在明亮的条件下,因此我可以将其设置得太低)。

我想问一下,absdiff是否仅适用于灰度图像?如果它也适用于BGR图像,那我哪里出错了?

最佳答案

cv2.absdiff确实可以在彩色图像上使用。我验证了这一点。您的错误在其他地方。

关于opencv - Absdiff在灰度而不是BGR色彩空间上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427539/

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