(六)OpenCV视频分析与对象跟踪_07_视频中移动对象统计
2020-03-06 21:35
141 查看
基于BSM模型
提取前景ROI区域对象轮廓
排除干扰与统计
#include <opencv2/opencv.hpp> #include <iostream> //#define _CRT_SECURE_NO_WARNINGS using namespace cv; using namespace std; int main(int argc, char** argv) { VideoCapture capture; capture.open("../path.avi"); if (!capture.isOpened()) { cout << "could not load video..." << endl; return -1; } //初始BS模型 //图像分割(GMM - 高斯混合模型) Ptr<BackgroundSubtractor> pMOG2 = createBackgroundSubtractorMOG2(); Mat fgmask; Mat kernel = getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1));//形态学操作kernel //定义轮廓 vector<vector<Point>> contours; vector<Vec4i> hierarchy; Mat frame; namedWindow("Video_demo", WINDOW_AUTOSIZE); while (capture.read(frame)) { pMOG2->apply(frame, fgmask);//BS threshold(fgmask, fgmask, 0, 255, THRESH_BINARY);//二值化 morphologyEx(fgmask, fgmask, MORPH_OPEN, kernel, Point(-1, -1));//形态学操作 findContours(fgmask, contours, hierarchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point());//查找轮廓 int count_contours = 0;//用于计算轮廓数 char numText[16];//buffer for (size_t i = 0; i < contours.size(); i++) { double area = contourArea(contours[i]); if (area < 10) continue;//面积太小就抛弃 Rect ROI = boundingRect(contours[i]);//获取轮廓(最小外包围矩形框) if (ROI.width < 3 || ROI.height < 3)continue;//ROI区域太小也抛弃 count_contours++; rectangle(frame, ROI, Scalar(255, 0, 255), 2, 8);//绘制轮廓外包围最小矩形框 sprintf(numText, "%d", count_contours);//把count_contours格式化存放到numText中 putText(frame, numText, Point(ROI.x, ROI.y), FONT_HERSHEY_PLAIN, 1, Scalar(255, 0, 0), 1, 8); } imshow("Video_demo", frame); char c = waitKey(100); if (c == 27) { break; } } capture.release(); waitKey(0); return 0; }
输出结果:
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- OpenCV视频分析与对象跟踪C++(四)视频中移动对象统计
- OpenCV视频分析与对象跟踪C++(二)光流对象跟踪-稀疏光流、稠密光流
- OpenCV视频分析与对象跟踪C++(三)CAMShift对象跟踪
- OpenCV系列视频教程(6):视频分析与对象跟踪实战教程
- OpenCV视频分析与对象跟踪C++(一)视频读写、背景消除建模(BSM)、对象检测与跟踪(基于颜色)
- (六)OpenCV视频分析与对象跟踪_09_扩展模块中的多对象跟踪
- OpenCV 视频跟踪系统的框架分析
- 视频分析与对象跟踪(二)(稀疏光流-KLT)
- OpenCV学习之运动分析与对象跟踪
- opencv3/C++基于移动对象的轮廓的跟踪
- opencv3/C++关于移动对象的轮廓的跟踪详解
- opencv中实现滚动条随着视频播放移动(回调函数)
- OpenCV 视频人数统计研究
- 全球Top10最佳移动统计分析sdk
- BT源代码学习心得(七):跟踪服务器(Tracker)的代码分析(HTTP协议处理对象) -- 转贴自 wolfenstein (NeverSayNever)
- 3款移动应用数据统计分析平台对比
- 苹果和安卓数据分析 移动应用统计工具哪个好用?
- Flurry、友盟、TalkingData,Google analytic移动应用统计分析对比
- Apollo 感知分析之跟踪对象信息融合
- 移动应用数据统计分析平台Flurry,Google Analytics