cv::BackgroundSubtractorMOG2的使用, 给出cpp列子
时间: 2024-01-19 13:09:13 浏览: 105
Motion-Detection-Using-BackgroundSubtractorMOG2
`cv::BackgroundSubtractorMOG2`也是一种基于高斯混合模型的背景建模算法,相对于`cv::BackgroundSubtractorMOG`来说,它更加强大和灵活。
以下是一个使用`cv::BackgroundSubtractorMOG2`的示例代码:
```cpp
#include <opencv2/opencv.hpp>
int main()
{
cv::VideoCapture cap("test_video.mp4");
cv::Ptr<cv::BackgroundSubtractorMOG2> pMOG2 = cv::createBackgroundSubtractorMOG2();
cv::Mat frame, fgMask;
while (cap.read(frame))
{
pMOG2->apply(frame, fgMask);
cv::imshow("Foreground Mask", fgMask);
cv::imshow("Input Frame", frame);
if (cv::waitKey(30) == 'q')
{
break;
}
}
return 0;
}
```
与`cv::BackgroundSubtractorMOG`相似,使用`cv::createBackgroundSubtractorMOG2`函数创建一个`cv::BackgroundSubtractorMOG2`对象,并在每个视频帧上使用`apply`函数计算前景掩码。可以通过调整构造函数和成员函数的参数来控制算法的性能和结果。
不同于`cv::BackgroundSubtractorMOG`,`cv::BackgroundSubtractorMOG2`还支持自适应学习率和阴影检测等特性,可以更加准确地处理各种场景。
阅读全文