我正在学习OpenCV并且我有很多乐趣,但现在我遇到了一个问题,我正在尝试使用背景减法算法来检测任何变化。
我遵循了this教程,我设法让它能够检测视频文件(AVI)中的更改。
我现在遇到的问题是它往往会错误地减去背景噪音和其他小变化,而是用白色填充整个屏幕。
Here是我在实时摄像头上实现的MOG算法,但相关部分是这样的:
VideoCapture cap;
if (argc > 1)
cap.open(argv[1]);
else
cap.open(0);
cap.set(CV_CAP_PROP_FOURCC ,CV_FOURCC('D', 'I', 'V', '3') );
........
Mat frame, fgMaskMOG;
Ptr<BackgroundSubtractor> pMOG = new BackgroundSubtractorMOG();
for (;;)
{
if(!cap.read(frame)) {
cerr << "Unable to read next frame." << endl;
continue;
}
// process the image to obtain a mask image.
pMOG->operator()(frame, fgMaskMOG);
std::string time = getDateTime();
cv::rectangle(frame,cv::Rect(0,cap.get(CV_CAP_PROP_FRAME_HEIGHT)-25,290,20),cv::Scalar(255,255,255),-1);
cv::putText(frame,time,cv::Point(0,cap.get(CV_CAP_PROP_FRAME_HEIGHT)-5),1,1.5,cv::Scalar(0,0,0),2);
........
// show image.
imshow("Image", frame);
imshow("Debug",fgMaskMOG);
int c = waitKey(30);
if (c == 'q' || c == 'Q' || (c & 255) == 27)
break;
}
如您所见,此实现适用于视频文件:
image description http://answers.opencv.org//upfiles/14072745951051408.png
image description http://answers.opencv.org//upfiles/14072746351663485.png
但是当我尝试在现场摄像机上使用MOG时,这就是结果:
image description http://answers.opencv.org//upfiles/14072748868325599.png
image description http://answers.opencv.org//upfiles/14072749039556545.png
(修改
预期结果:我的期望与视频文件相同(参见上面的图片一和二)。
实际结果:实际结果远远超出我的预期结果,产生了很多噪音(即没有过滤掉),当一个人把东西放在相机前面时,它会是黑色而不是白色(反向)从视频文件的结果)
- - - - 系统详细信息 - - - -
操作系统: Windows x64bit
可提供内存: 3890 MB
WEBCAM:我在Satellite C660 TOSHIBA笔记本电脑上使用内置网络摄像头。
的编译器:
image description http://answers.opencv.org//upfiles/14074106918566591.png Microsoft Visual Studio Express 2012 for Windows桌面
image description http://answers.opencv.org//upfiles/14074106918566591.png版本11.0.61030.00更新4
image description http://answers.opencv.org//upfiles/14074106918566591.png Microsoft .NET Framework
image description http://answers.opencv.org//upfiles/14074106918566591.png版本4.5.50948
OpenCV版本: OpenCV V. 2.4.9,专为Windows打造,从SourceForge下载。
输出 cv::getBuildInformation()
: OpenCV_BUILD.txt
Microsoft Visual Studio项目属性表: OpenCV Project Property Sheet
)