介绍
小编给大家分享一下opencv3/c++怎么实现视频背景去除建模,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
<强>视频背景建模主要使用到:强>
高斯混合模型(混合高斯,MOG)
createBackgroundSubtractorMOG2 (int 历史=500,double varThreshold=16, bool detectShadows=true),
K最近邻(k-NearestNeighbor资讯)
createBackgroundSubtractorKNN (int 历史=500,double dist2Threshold=400.0, bool detectShadows=true),
历史:历史的长度。
varThreshold:像素和模型之间马氏距离的平方的阈值。
detectShadows:默认为真的,检测阴影并标记它们(影子会被标记为灰色)。会降低了部分速度。
实例:
# includeusing namespace 简历; int main () { VideoCapture 才能;捕获; capture.open才能(“E://01. avi"形象;); 如果才能(! capture.isOpened ()) {才能 ,,,printf(“还要not open video file , \ n"); ,,,return 1; ,,} Mat 才能;框架; namedWindow才能(“input",, CV_WINDOW_AUTOSIZE); namedWindow才能(“MOG2",, CV_WINDOW_AUTOSIZE); namedWindow才能(“KNN",, CV_WINDOW_AUTOSIZE); Mat 才能;maskMOG2, maskKNN; Ptr<才能;BackgroundSubtractor>, pMOG2 =, createBackgroundSubtractorMOG2(500年,25岁,真的); Ptr<才能;BackgroundSubtractor>, pKNN =, createBackgroundSubtractorKNN (); Mat 才能;kernel =, getStructuringElement (MORPH_RECT,大小(5,5)); while 才能;(capture.read(帧)) {才能 ,,,imshow (“input",,框架); ,,,pMOG2→应用(框架,,maskMOG2); ,,,pKNN→应用(框架,,maskKNN); ,,,//对处理后的帧进行开操作,减少视频中较小的波动造成的影响 ,,,morphologyEx (maskMOG2、maskMOG2, MORPH_OPEN,,内核,,点(1,1)); ,,,morphologyEx (maskKNN、maskKNN, MORPH_OPEN,,内核,,点(1,1)); ,,,imshow (“MOG2",, maskMOG2); ,,,imshow (“KNN",, maskKNN); ,,,waitKey (3); ,,} capture.release才能(); return 才能;0; }
<>强视频中移动的玻璃球:强>
<强> MOG分离出的小球区域:强>
<强>资讯分离出的小球区域:强>
以上是“opencv3/c++怎么实现视频背景去除建模”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!