基于OpenCV的高效背景减法
我想用OpenCV方法在视频文件中进行背景减法。现在我可以做背景减法,但问题是我不能在颜色模式下得到输出。减去背景后的所有输出都将以灰度颜色模式:()显示。我想获得前景的颜色信息,这是减去背景后的结果输出 我可以使用掩蔽技术吗?就像我正在考虑的下面的过程基于OpenCV的高效背景减法,opencv,background-subtraction,Opencv,Background Subtraction,我想用OpenCV方法在视频文件中进行背景减法。现在我可以做背景减法,但问题是我不能在颜色模式下得到输出。减去背景后的所有输出都将以灰度颜色模式:()显示。我想获得前景的颜色信息,这是减去背景后的结果输出 我可以使用掩蔽技术吗?就像我正在考虑的下面的过程 捕获输入--InputFrame(RGB) 处理InputFrame 减去背景,将前景存储在TempFrame(灰度:() 使用TempFrame 将创建的掩码应用于InputFrame 将彩色前景设置为外帧 我很喜欢用OpenCV做掩蔽。我只
InputFrame
(RGB)InputFrame
TempFrame
(灰度:()TempFrame
InputFrame
提前谢谢。好的,如果你使用背景减法,我不明白TempFrame(你的前景)怎么可能是灰度的。你必须使用一种非常特殊的算法。但是假设TempFrame是灰度的,那么你可以这样做:
cv::Mat mask = tempFrame > 0.5;
cv::Mat outFrame;
capturedFrame.copyTo(outFrame, mask);
这是上面的OpenCV 2.0代码。数字0.5是一个阈值,您需要将其设置为适当的值。如果您不使用浮点图像,您可能会将其设置为128或类似的值。这与OpenCV 1.1代码中的情况相同:
CvMat* mask = cvCreateMat(tempFrame.rows, tempFrame.cols, CV_8UC1);
cvCmpS(tempFrame, 0.5, mask);
CvMat* outFrame = cvCreateMat(capturedFrame.rows, capturedFrames.cols, CV_32FC3);
cvCopy(capturedFrame, outFrame, mask);
代码在这里
到达彩色前景
只需使用前景遮罩复制图像
//image.copyTo(前台,前台);谢谢,但我仍然想知道为什么我在互联网上看到的所有BGS示例和代码都只生成灰度输出?无论如何……再次感谢。哦,好吧,我想用灰度做背景减法更容易,所以可能这就是原因。