我想使用OpenCV方法在视频文件中进行背景扣除。现在我可以做背景减法,但问题是我无法在彩色模式下获得输出。减去背景后的所有输出都是灰度颜色模式 :( 。我想获取前景的颜色信息,这是减去背景后的结果输出。
我可以使用遮蔽技术吗?就像我正在考虑的以下程序一样。
InputFrame
(RGB)InputFrame
TempFrame
中(以灰度显示 :( )TempFrame
InputFrame
OutFrame
我对使用OpenCV进行屏蔽感到兴奋。我只是OpenCV的初学者。请帮助我克服这一点。
提前致谢。
答案 0 :(得分:21)
代码在这里
http://code.google.com/p/derin-deli-mavi/downloads/detail?name=denemeOpenCv23.zip&can=2&q=
到达彩色前景 只需使用前景蒙版复制图像
// image.copyTo(前景,前景);
答案 1 :(得分:11)
好吧,如果你使用背景减法,我不明白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);