OpenCV 视频处理框架
2014-07-14 23:31
288 查看
OpenCV 本身集成了 FFmpeg,因此对于视频是有解码和编码功能的。虽然其效率在本人看来还不能跟未被封装的FFmpeg相提并论,然用其来对视频进行解码得到图像,然后对图像进行处理并将得到的图像重新压缩成视频是非常方便的,下面将介绍把视频解码成图像并进行帧差法等操作后往回压缩成视频的框架搭建,值得注意的是在OpenCV2.1版本图像压缩成视频是有BUG的,最好还是用新的版本来进行学习。除此之外,要让opencv支持压缩,还需要装相对应的编码器,详情可见。
因为这里调用到的解码器并非OpenCV自带的,因此如果之前没安装相应的解码器,函数会一直返回空,这种情况可以到这里下载相应的解码器来解决。
在OpenCV2.0接口中,实现代码如下:
#include <opencv2/opencv.hpp> #include "opencv2/highgui/highgui.hpp" #include <opencv2/core/core.hpp> using namespace cv; CvVideoWriter * pVW = NULL;//写回文件对象 void MotionDetect(IplImage *frame1, IplImage *frame2)//两帧图像处理函数 { //在此加入图像处理代码 } void main() { IplImage *frame1 = NULL, *frame2 = NULL;//frame1为新的图像,frame2为frame1的前一张图像 CvCapture *capture = NULL; capture = cvCaptureFromAVI("2.avi");//打开视频 frame1 = cvQueryFrame(capture);//从摄像头或者文件中抓取并返回一帧 frame2 = cvCreateImage(cvGetSize(frame1), 8, 3); cvCopy(frame1, frame2); frame1 = cvQueryFrame(capture); pVW = cvCreateVideoWriter("output.avi", CV_FOURCC('D', 'I', 'V', 'X'), 30, cvSize(frame1->width, frame1->height), 1);//以mpeg4数据格式进行视频编码,帧率为30帧/s while (frame1) { MotionDetect(frame1, frame2);//移动侦测 cvCopy(frame1, frame2); cvShowImage("", frame2);//显示处理完图像 cvWaitKey(5); cvWriteFrame(pVW, frame2);//将处理完图像数据写入视频 frame1 = cvQueryFrame(capture);//接着从视频中拷入图像 } cvReleaseImage(&frame2); cvReleaseVideoWriter(&pVW); }
因为这里调用到的解码器并非OpenCV自带的,因此如果之前没安装相应的解码器,函数会一直返回空,这种情况可以到这里下载相应的解码器来解决。
在OpenCV2.0接口中,实现代码如下:
#include <opencv2/opencv.hpp> #include "opencv2/highgui/highgui.hpp" #include <opencv2/core/core.hpp> using namespace cv; void main() { VideoCapture capture; capture.open("30.avi"); if (!capture.isOpened()) { printf("文件打开失败"); } //获取整个帧数 long totalFrameNumber = capture.get(CV_CAP_PROP_FRAME_COUNT); for (size_t i = 0; i < totalFrameNumber; i++) { Mat frame; capture >> frame; imshow("readvideo", frame); waitKey(10); } }
相关文章推荐
- OpenCV 视频处理框架
- 基于OpenCV之视频读取,处理和显示框架的搭建(一)
- opencv 视频处理框架,面向对象,简单实用,可扩展
- 基于OpenCV之视频读取,处理和显示框架的搭建(一)
- OpenCV 视频处理框架
- Android与OpenCV2.4.4(2013最新)搭建图像处理框架
- opencv视频处理整理
- 基于RF5框架的视频处理系统研究
- 图像视频处理中Win7 32位+VS2010+OpenCV2.3.1的配置过程
- OpenCv视频处理函数
- openCv视频处理
- 视频加载、处理、输出-----opencv2.0学习笔记4
- avi视频的提取与处理(opencv)
- OpenCV成长之路(10):视频的处理
- QT 框架中快速应用OpenCV 基于视频播放
- OpenCV视频处理相关问题及解决方法
- OpenCv视频处理函数
- openCV 视频平滑处理 小程序
- 测试自动化框架之----自定义报表与错误处理两个模块视频
- opencv处理视频颠倒问题