Jab*_*bez 8 opencv background-subtraction
我想使用OpenCV方法在视频文件中进行背景扣除.现在我可以做背景减法,但问题是我无法在彩色模式下获得输出.减去背景后的所有输出都是以灰度颜色模式进行的:(.我想获取前景的颜色信息,这是减去背景后的结果输出.
我可以用掩蔽技术吗?像我正在考虑的以下程序.
InputFrame(RGB)InputFrameTempFrame(以灰度显示:()TempFrameInputFrameOutFrame我很惊讶使用OpenCV进行屏蔽.我只是OpenCV的初学者.请帮助我克服这一点.
提前致谢.
Bir*_*mcu 21
代码在这里
http://code.google.com/p/derin-deli-mavi/downloads/detail?name=denemeOpenCv23.zip&can=2&q=
到达彩色前景只需使用前景蒙版复制图像
// image.copyTo(前景,前景);
Ray*_*yat 11
好吧,如果您使用背景减法,我不明白TempFrame(您的前景)如何可以是灰度.您必须使用非常特殊的算法.但假设TempFrame是灰度,那么你会这样做:
cv::Mat mask = tempFrame > 0.5;
cv::Mat outFrame;
capturedFrame.copyTo(outFrame, mask);
Run Code Online (Sandbox Code Playgroud)
这是上面的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);
Run Code Online (Sandbox Code Playgroud)