opencv3/c++怎么实现视频背景去除建模

  介绍

小编给大家分享一下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:默认为真的,检测阴影并标记它们(影子会被标记为灰色)。会降低了部分速度。

实例:

# include   using  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;      }

<>强视频中移动的玻璃球:

 opencv3/c++怎么实现视频背景去除建模

<强> MOG分离出的小球区域:

 opencv3/c++怎么实现视频背景去除建模

<强>资讯分离出的小球区域:

 opencv3/c++怎么实现视频背景去除建模

以上是“opencv3/c++怎么实现视频背景去除建模”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

opencv3/c++怎么实现视频背景去除建模