`
gaofen100
  • 浏览: 1187338 次
文章分类
社区版块
存档分类
最新评论

利用opencv捕获usb摄像头并写入视频文件

 
阅读更多

对于搞视频监控的朋友来说,视频文件的写入,几乎是必须的一个步骤。这里,我给出一个视频文件写入的例子。首先是利用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实现程序-部分7

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分5

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分4

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分1

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分12

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分11

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分10

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分9

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分8

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分6

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分3

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

    Opencv实现程序-部分2

    (10)对摄像头(电脑摄像头/USB摄像头)的操作功能实现代码; (11)对摄像头采集视频进行图片捕获以及反转处理保存功能实现代码; (12)对读取的图片进行滤波变换处理功能实现代码; (13)对读取图片进行中值滤波、...

Global site tag (gtag.js) - Google Analytics