标签:
几个程序使用的基本函数如下:
*******************************************************************
初始化从摄像头中获取视频
CvCapture* cvCreateCameraCapture( int index );
函 数cvCreateCameraCapture给从摄像头的视频流分配和初始化CvCapture结构。目前在Windows下可使用两种接 口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有两种接口:V4L和FireWire(IEEE1394)。
释放这个结构,使用函数cvReleaseCapture。
返回值为一个
CvCapture
************************************************************************************************
视频获取结构
typedef struct CvCapture CvCapture;
结构CvCapture 没有公共接口,它只能被用来作为视频获取函数的一个参数。
******************************************************************************
如果抓取帧为空 break 打破循环
否则将抓取的那一帧显示在创建的窗口上
cvShowImage("video",pFrame);
当前帧显示后
char c=cvWaitKey(33);
if(c==27)break;
我们等待33ms
如果用户触发了按键,将按键的ASCII值给C
如果C为ESC(ASCII 为27)循环退出
最后释放capture 和window
cvReleaseCapture(&pCapture);
cvDestroyWindow("video");
最后释放占用资源
程序代码如下:
======================================================================
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
#pragma comment(linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"")
int main(int argc, char** argv)
{
//声明IplImage指针
IplImage* pFrame = NULL;
//获取摄像头
CvCapture* pCapture = cvCreateCameraCapture(-1);
//创建窗口
cvNamedWindow("video", 1);
//显示视屏
while (1)
{
pFrame = cvQueryFrame(pCapture);
if (!pFrame)break;
cvShowImage("video", pFrame);
char c = cvWaitKey(33);
if (c == 27)break;
}
cvReleaseCapture(&pCapture);
cvDestroyWindow("video");
}
运行结果如下:
标签:
原文地址:http://www.cnblogs.com/edver/p/5135579.html