程序只是简单的使用OpenCV 1.0 的API进行摄像头操作 (源码放在http://download.csdn.net/detail/zxx2011/6593437)
#include <stdio.h>
#include <cv.h>
#include <cxcore.h>
#include <highgui.h>
int main( int argc, char** argv )
{
//声明IplImage指针,IplImage指针在之后的摄像头图像传递,图像处理,图像显示中都作为主要处理的参数。按照说明书,成员主要有:大小,版本,通道数,位深数,颜色通道(是否交叉存取),顶/底左结构,宽像素,高像素,图像感兴趣区域,图像数据大小,指向排列,排列图像行大小;而被opencv忽略、或者置空的成员有alphaChannel,colorModel[4]等。
IplImage* pFrame = NULL;
//CvCapture没有公共接口,只能视为视频获取的一个参数
CvCapture* pCapture = NULL;
//创建窗口,原型:int cvNameWindow (const char *name,int flag=CV_WINDOW_AUTOSIZE)
cvNamedWindow( "GnVideo", 1 );
//打开摄像头,原型:IplImage* cvQueryFrame( CvCapture* capture );函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。返回的图像不可以被用户释放或者修改。
if ( !( pCapture = cvCaptureFromCAM( -1 ) ) )
{
fprintf( stderr, "Can not open camera.\n" );
return -2;
}
//逐帧读取视频
while ( pFrame = cvQueryFrame( pCapture ) )
{
//显示图像
cvShowImage( "GnVideo", pFrame );
if ( cvWaitKey( 10 ) == 27 )
{
break;
}
}
//销毁窗口
cvDestroyWindow( "GnVideo" );
cvReleaseCapture( &pCapture );
return 0;
}