①获取总线上相机个数和index
BusManager busMgr; //总线信息
unsigned intnumCameras;
error =busMgr.GetNumOfCameras(&numCameras); //获取总线上所有相机信息
②获取某一个相机GUID
PGRGuid guid;
error = busMgr.GetCameraFromIndex(i, &guid); //获取第i个相机的GUID
③连接相机
Camera cam; //相机类
//GigECamera cam; //网口相机类
error =cam.Connect(&guid); //连接相机
CameraInfocamInfo; //相机信息类
error =cam.GetCameraInfo(&camInfo); //获得相机的信息
④开始采集
error =cam.RetrieveBuffer( &rawImage );
⑤更改参数(读写shutter)
Property shutter(SHUTTER); //参数属性类,确定参数类型,详见SDK help,如果改gain,则SHUTTER替换为GAIN
error = cam.GetProperty(&shutter); //获取相机shutter
shutter.absValue =0.2; //shutter值改为0.2s
shutter.absControl= TRUE; //采用绝对值输入
shutter.autoManualMode= FALSE; //关闭自动,手动设置shutter
shutter.onePush =FALSE; //关闭onePush
shutter.onOff =TRUE; //shutter有效
shutter.present =TRUE;error = cam.SetProperty(&shutter); //写入设置好的shutter
⑥获取与保存图像数据
Image rawImage; //原始数据
error =cam.RetrieveBuffer( &rawImage ); //接收原始数据
error =rawImage.Convert( PIXEL_FORMAT_BGRU, &convertedImage ); //转换成需要的格式
charfilename[512]; //文件名
sprintf( filename, "%u-%d.bmp",camInfo.serialNumber, imageCount );
error =convertedImage.Save( filename ); //保存图片
⑦停止采集、断开连接
error = cam.StopCapture();
error = cam.Disconnect();
注意:保存图像数据时,Convert()函数新生成的Image不会传递嵌入的图像信息(Embedded Image Information)如Timestamp,Frame counter等。
需从转换前的Image对象获得。例如Frame counter获取示例:
ImageMetadata meta = rawImage.GetMetadata();
unsigned int FrameCounter = meta.embeddedFrameCounter;