利用opencv捕获usb摄像头并写入视频文件
来源:互联网 发布:剑灵数据图怎么导入 编辑:程序博客网 时间:2024/04/30 03:21
对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用opencv进行USB相机的视频捕获,然后,将视频帧写入到视频文件当中。在进行视频文件的写入之前,有两点需要提醒:
(1)opencv只是一个图像处理的工具库,并不是视频处理的工具库!也就是说,它所处理的对象,应该是一张一张的图片,而opencv本身虽然有一些API函数可以进行USB相机的读取,但也仅仅是调用了windows 底层的vfw模块来实现,所以,如果你是windows vista,windows7之类的操作系统,很可能微软已经抛弃了vfw模块。而这个时候,再利用opencv的相机视频捕获函数,就无法获取视频帧了。
(2)视频文件(.mpeg,.mp4,.rmvb,.avi等格式)的读写,需要专门的视频编解码器。很显然,不同格式的视频文件,采用的视频编码技术是不相同的(值得提醒的是,.avi格式的视频文件,尽管后缀是相同的,但内部采用的视频编码算法仍可能不相同,具体可以参考这里http://blog.csdn.net/carson2005/article/details/6314089),所以,进行视频文件读写之前,你需要按照相应的视频编解码器。而暴风,kmplayer之类的视频播放器,其内部就已经包含了常用的视频格式文件的编解码器。所以,你可以直接利用他们进行视频文件的播放。
OK,了解了上面两点,你就知道,在利用opencv进行视频文件写入之前,必须要下载相应的视频编解码器。常用的有divx,xvid,ffmpeg等,笔者在这里采用xvid(这里有个简单介绍:http://blog.csdn.net/carson2005/article/details/6553867)。
下面给出参考代码:
#include "stdafx.h"#include "cv.h"#include "highgui.h"#include "iostream"using namespace std;int _tmain(int argc, _TCHAR* argv[]){ CvCapture *cap = cvCreateCameraCapture(0);//初始化相机捕获的指针 if (!cap) { cout<<"create camera capture error..."<<endl; system("pause"); exit(-1); } IplImage *tempImg = cvQueryFrame(cap); double fps = 20; CvSize size = cvSize( (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_WIDTH), (int)cvGetCaptureProperty(cap, CV_CAP_PROP_FRAME_HEIGHT) ); CvVideoWriter *writer = cvCreateVideoWriter("c:/test.avi", CV_FOURCC('X','V','I','D'), fps, size); IplImage *img = cvCreateImage(size, 8, 3); while((tempImg=cvQueryFrame(cap)) != NULL) { cvCopy(tempImg, img); if (img->origin == IPL_ORIGIN_TL) { cvFlip(img, img); } cvWriteFrame(writer, img); } cvReleaseImage(&img); cvReleaseCapture(&cap); cvReleaseVideoWriter(&writer); system("pause"); return 0;}
- 利用opencv捕获usb摄像头并写入视频文件
- 利用opencv捕获usb摄像头并写入视频文件
- 利用opencv捕获usb摄像头并写入视频文件
- opencv笔记 1.利用摄像头进行视频文件写入
- opencv 读取视频、打开摄像头、写入视频文件
- opencv 读取视频、打开摄像头、写入视频文件
- 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件
- DirectShow中利用SampleGrabber捕获摄像头每一帧图像,并转为BMP文件信息写入内存
- DirectShow中利用SampleGrabber捕获摄像头每一帧图像,并转为BMP文件信息写入内存
- DirectShow中利用SampleGrabber捕获摄像头每一帧图像,并转为BMP文件信息写入内存
- OpenCV2从摄像头获取帧并写入视频文件
- 使用OpenCV捕获视频,并保存为视频文件
- opencv启动USB摄像头并保存图片
- OpenCV写入AVI视频文件
- opencv写入视频文件
- OpenCV摄像头捕获
- python opencv 使用摄像头捕获视频并显示
- opencv从摄像头读写视频文件
- USB2.0和USB3.0区别
- 工作流API
- UVa 10069 - Distinct Subsequences
- 查看动态链接库中函数参数类型
- 【CPPTraining】Techniques towards Less Coding (Cont.) PA
- 利用opencv捕获usb摄像头并写入视频文件
- Segmentation fault (core dumped)
- AndroidTestCase
- 七天优惠券密码
- JPEG图像压缩算法流程详解
- OpenCV的几个小技巧
- ABAP日期函数应用
- 腾讯诉360案一审360败诉 周鸿祎称不服
- Linux 内核源代码目录结构