OpenCV 从视频中获取背景
来源:互联网 发布:优酷mac缓存在哪里 编辑:程序博客网 时间:2024/05/16 11:31
本例是从一段视频中,获取背景,去掉前景物体。思路是,N帧叠加再取平均值,只要N足够,即可以消除前景物体。
#include <iostream> #include "opencv2/opencv.hpp" #include "opencv2/nonfree/features2d.hpp"#include "opencv2/highgui.hpp"using namespace cv;using namespace std;void OverlayMat(Mat& src, unsigned int iBgk[240][960]){int nRows = 240;int nCols = 320 * 3;for (int i = 0; i < nRows; ++i){uchar* p = src.ptr<uchar>(i);for (int j = 0; j < nCols; ++j){iBgk[i][j] += p[j];}}}int main(int argi, char** argv){printf("start!\n");VideoCapture cap;cap.open(argv[1]);if (!cap.isOpened()){printf("open file fail!\n");return -1;}printf("open file success!\n");Mat prevgray, gray, flow, cflow, frame;Mat bkg(240, 320, CV_8UC3);unsigned int iBkg[240][960] = { 0 };namedWindow("背景", 1);int total = 0;int temp = 0;for (;;){double t = (double)cvGetTickCount();if (!cap.read(frame))break;OverlayMat(frame, iBkg);total++;imshow("原始", frame);if (waitKey(10) >= 0)break;}cout << "total frames:" << total << endl;cap.release();int ch = 3;int nRows = 240;int nCols = 320 * ch;uchar* p;for (int i = 0; i < nRows; ++i){p = bkg.ptr<uchar>(i);for (int j = 0; j < nCols; ++j){p[j] = iBkg[i][j] / total;}}imshow("背景", bkg);if (waitKey(0) >= 0)return 0;return 0;}
0 0
- OpenCV 从视频中获取背景
- 小工具--OpenCV从视频中获取图像集
- 通过OPENCV从视频中获取图片并保存
- opencv从视频中获取一帧帧图像(五)
- 【opencv】从视频中获取多帧图像
- opencv从两路视频中获取图片
- 使用opencv:从视频中获取每一帧图片
- 从摄像头中获取视频
- OpenCV(二)播放一段视频(从计算机摄像头中获取)
- 使用OpenCV从视频中捕获图像
- opencv从硬盘中读取显示视频
- 视频背景抠图(opencv)
- 关于opencv从视频获取单帧图片函数cvQueryFrame
- opencv-从设备获取视频并且一帧一帧的保存下来
- OpenCV之从视频获取每一帧图像
- 三.使用OpenCv从摄像头获取视频和从文件播放视频
- 在用opencv实现从视频中读取图片,并保存下来,但是获取的图片都是黑色的!!!
- Python OpenCV获取视频
- HTTPS原理浅谈
- 新手学java-运用数组写一个五子棋小程序
- “玲珑杯”ACM比赛 Round #5 C -- Coco(递归)
- 模式识别一--利用MATLAB生成模式类
- 正向代理和反向代理
- OpenCV 从视频中获取背景
- ubuntu16.04+CUDA 8.0+Anaconda 4.2.0+Theano+Keras+cuDNN 5 (一)
- 数据结构--戴克斯特拉算法
- 学习笔记--下拉框实现
- 保护你系统安全的影子系统
- jdk,jre,jvm
- oracle数据库初步之操作表
- Matlab2016b:通过mex调用opencv
- 网页背景音乐播放器html代码