RES_MODE1--640*512,RES_MODE2--320*256。
MV20xxUx系列摄像机的分辨率:RES_MODE0--1600*1200,RES_MODE1--800*600,RES_MODE2--400*300。
MV31xxUx系列摄像机的分辨率:RES_MODE0--2048*1536,RES_MODE1--1024*768,RES_MODE2--640*480,RES_MODE3--512*384。
有关摄像机分辨率的信息,参见函数HVGetDeviceInfo。 范例:HVSetResolution (hDevice1,RES_MODE1); 参看:HVSetOutputWindow。
4.函数:HVSetOutputWindow //设置图像输出(Output)窗口
原型:HVSTATUS__stdcall HVSetOutputWindow(HHV hhv,int nStartX,int nStartY, Int nWidth,int nHeight) 参数:
HHVhhv; 摄像机句柄。
intnStartX; 输出窗口左上角x坐标,数值应为4的倍数。 intnStartY; 输出窗口左上角y坐标,数值应为2的倍数。 intnWidth; 输出窗口宽度,数值应为4的倍数。 intnHeight; 输出窗口高度,数值应为2的倍数。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。
说明:设置图像输出(Output)窗口,输出窗口是指图像数据从摄像机输出时的起始位置 和大小。输出窗口大小只能等于或小于当前分辨率的大小。需要特别说明的是摄像机MV400Ux,在调节窗口时,需要满足条件: nWidth*rate+HorizontalBlanking+0x5e>0x294 rate取值:
分辨率Mode0:rate=1;Mode1:rate=2
范例:HVSetOutputWindow (hDevice1,0,0,640,512); 参看:HVSetResolution。
5.函数:HVSetBlanking //设置摄像机的消隐值,
原型:HVSTATUS__stdcallHVSetBlanking(HHVhhv,intnHor,intnVert); 参数:
HHVhhv; 摄像机句柄。 intnHor; 行消隐值。 intnVert; 场消隐值。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。
说明:设置摄像机的消隐值,消隐的取值范围通过函数HVGetDeviceInfo得到,请参考 HVGetDeviceInfo函数说明。
范例:HVSetBlanking(hDevice1,20,0);
6.函数:HVSetSnapMode //设置图像的采集方式。
原型:HVSTATUS__stdcallHVSetSnapMode(HHVhhv,HV_SNAP_MODEmode); 参数:
HHVhhv; 摄像机句柄。
HV_SNAP_MODEmode; 图像采集模式: CONTINUATION连续方式; TRIGGER 外触发方式;
TRIGGER_EDGE边缘外触发;
TRIGGER_LEVEL电平外触发。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:设置图像的采集方式。
范例:HVSetSnapMode(hDevice1,CONTINUATION);
仅MV31xxUx摄像机支持TRIGGER_EDGE和TRIGGER_LEVEL两种模式。
7.函数:HVSetTriggerPolarity //设置外触发信号的极性。
原型:HVSTATUS__stdcallHVSetTriggerPolarity(HHVhhv,HV_POLARITYpolarity); 参数:
HHVhhv; 摄像机句柄。
HV_POLARITYpolarity; 外触发信号的极性: LOW 下降沿或低电平有效; HIGH上升沿或高电平有效。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。
说明:当摄像机为外触发模式采集图像时,设置外触发信号的极性。 范例:HVSetTriggerPolarity(hDevice1,LOW);
8.函数:HVSetStrobePolarity //设置摄像机输出的闪光灯信号的极性。
原型:HVSTATUS__stdcallHVSetStrobePolarity(HHVhhv,HV_POLARITYpolarity); 参数:
HHVhhv; 摄像机句柄。
HV_POLARITYpolarity; 闪光灯信号的极性: LOW下降沿或低电平有效; HIGH上升沿或高电平有效。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:设置摄像机输出的闪光灯信号的极性。 范例:HVSetStrobePolarity(hDevice1,LOW);
9.函数:HVSetSnapSpeed //设置图像的采集速度
原型:HVSTATUS__stdcallHVSetSnapSpeed(HHVhhv,HV_SNAP_SPEEDspeed); 参数:
HHVhhv; 摄像机句柄。
HV_SNAP_SPEEDspeed; 图像采集速度: NORMAL_SPEED正常速度; HIGH_SPEED高速。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。
说明:设置图像的采集速度,例如MV1300UC,MV1300UM,分辨率为1280*1024时,高速 采集为15fps,正常速度采集时为7.5fps;MV2000UC分辨率为1600*1200时,高速采集为10fps,正常速度采集时为5fps;MV3000UC分辨率为2048*1536时,高速采集为6fps,正常速度采集时为3fps。
范例:HVSetSnapMode(hDevice1,NORMAL_SPEED);
10.函数:HVEnableVideoMirror //设置采集图像的垂直方向镜像功能。
原型:HVSTATUS__stdcall HVEnableVideoMirror(HHVhhv,HV_MIRROR_DIRECTION dir,BOOLbEnable) 参数:
HHVhhv;摄像机句柄。
HV_MIRROR_DIRECTIONdir; 图像采集的镜像方向。
BOOLbEnable; TRUE允许,FALSE 禁止。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:设置采集图像的垂直方向镜像功能。
部分摄像机同时支持垂直、水平和完全镜像,其他摄像机都只支持垂直镜像。
11.函数:HVADCControl //摄像机的模拟/数字转换A/D控制。
原型:HVSTATUS__stdcallHVADCControl(HHVhhv,BYTEbyParam,longlValue); 参数:
HHVhhv; 摄像机句柄。 BYTEbyParam; 控制参数, ADC_BITS模拟/数字转换级别;
ADC_BLKLEVEL_CAL 黑电平参数调节允许;
ADC_BLKLEVEL_CAL_REDCHANNEL 红色通道黑电平调节;
ADC_BLKLEVEL_CAL_GREENCHANNEL1绿色通道1黑电平调节; ADC_BLKLEVEL_CAL_GREENCHANNEL2绿色通道2黑电平调节; ADC_BLKLEVEL_CAL_BLUECHANNEL蓝色通道黑电平调节; longlValue; 参数值,设置模拟数字转换级别,取值, ADC_LEVEL0; ADC_LEVEL1; ADC_LEVEL2; ADC_LEVEL3。
设置黑电平参数调节允许,取值, TRUE允许;FALSE 禁止。 设置黑电平参数,取值, -255到255。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:摄像机的模拟/数字转换控制。
12.函数:HVAGCControl //摄像机的自动增益控制。
原型:HVSTATUS__stdcallHVAGCControl(HHVhhv,BYTEbyParam,longlValue); 参数:
HHVhhv; 摄像机句柄。 BYTEbyParam; 控制参数,
AGC_GAIN_RED_CHANNEL 红通道增益调节;
AGC_GAIN_GREEN_CHANNEL1 绿通道1增益调节; AGC_GAIN_GREEN_CHANNEL2 绿通道2增益调节; AGC_GAIN_BLUE_CHANNEL 蓝通道增益调节; longlValue; 增益大小,
MV-51系列摄像机增益0-63。其他MV系列摄像机分通道的增益调节取值,0-127。 返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:摄像机的自动增益控制。
13.函数:HVAECControl //摄像机的自动曝光控制。
原型:HVSTATUS__stdcallHVAECControl(HHVhhv,BYTEbyParam,longlValue); 参数:
HHVhhv摄像机句柄。
BYTEbyParam; 控制参数,
AEC_EXPOSURE_TIME曝光系数; AEC_SHUTTER_SPEED快门速度; AEC_SHUTTER_UNIT快门速度单位; longlValue; 参数值,
功能AEC_SHUTTER_UNIT取值:
HV_SHUTTER_UNIT的类型,SHUTTER_US 微秒;SHUTTER_MS 毫秒。 AEC_SHUTTER_SPEED 和AEC_SHUTTER_UNIT的值决定摄像机的快门速度:最小值20微秒,最大值1秒。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:摄像机的自动曝光控制。
MV 系列摄像机通过曝光系数来设置摄像机的曝光时间,曝光系数与曝光时间的换算方法, 参见相关MV系列摄像机的使用说明书中“1.2 摄像机的快门”的内容。 范例:为摄像机设置16ms曝光时间 //方法1:
HVAECControl(hhv,AEC_SHUTTER_SPEED,16);
HVAECControl(hhv,AEC_SHUTTER_UNIT,SHUTTER_MS); //方法2:
计算曝光系数dExposure
HVAECControl(hhv,AEC_EXPOSURE_TIME,dExposure);
14.函数:HVCommand 数字摄像机的操作命令函数
原型:
HVSTATUS__stdcall HVCommand(HHV hhv,HV_COMMAND_CODE CommandCode,void *pContext, int *pLength); 参数:
HHVhhv; 摄像机句柄。
HV_COMMAND_CODECommandCode;功能代码:
CMD_SET_STROBE_SIGNAL_MODE 控制闪光灯信号模式的功能码 CMD_SET_EXPOSURE_MODE 控制曝光模式的功能码
CMD_SET_ROW_NOISECORR_CONTROL控制行噪声校正开关的功能码 CMD_HVAPI_CONTROL 执行HV_CONTROL_CODE定义的功能; void*pContext; 指向实现功能所需参数的缓冲区。其中,功能:
CMD_SET_STROBE_SIGNAL_MODE 参数为结构HV_SIGNAL_MODE; CMD_SET_EXPOSURE_MODE 参数为枚举类型HV_EXPOSURE_MODE; CMD_SET_ROW_NOISECORR_CONTROL参数为枚举类型HV_NOISECORR_CONTROL
CMD_HVAPI_CONTROL参数为结构HVAPI_CONTROL_PARAMETER; int*pLength; 参数缓冲区的大小,以字节为单位。其中,功能: CMD_SET_STROBE_SIGNAL_MODE 参数缓冲区是8字节; CMD_SET_EXPOSURE_MODE 参数缓冲区是4字节;
CMD_HVAPI_CONTROL 参数缓冲区是24字节。
返回值:调用成功,返回STATUS_OK,否则返回错误代码。
说明:数字摄像机的操作命令函数,通过指定不同的功能代码,执行各种摄像机的操作。 其中,功能代码:
CMD_HVAPI_CONTROL
执行HV_CONTROL_CODE定义的功能,ORD_QUERY_LAST_STATUS_PRESENCE,具体调用方法可
参照范例1;ORD_GET_LAST_STATUS,具体调用方法可参照范例2。 范例:
//范例1:查询是否支持,获取摄像机的工作状态
HV_RES_QUERY_LAST_STATUS_PRESENCE ResFeature; HVAPI_CONTROL_PARAMETER p; p.pInBuf =NULL; p.dwInBufSize=0;
p.pOutBuf=&ResFeature;
p.dwOutBufSize=sizeof(ResFeature); p.pBytesRet =NULL;
p.code=ORD_QUERY_LAST_STATUS_PRESENCE; intdwSize=sizeof(p);
HVSTATUSstatus=HVCommand(hhv,CMD_HVAPI_CONTROL,&p,&dwSize); //范例2:获取摄像机的采集状态
HV_ARG_GET_LAST_STATUS ArgFeature;
ArgFeature.type=HV_LAST_STATUS_TRANSFER; HV_RES_GET_LAST_STATUS ResFeature; HVAPI_CONTROL_PARAMETER p; p.pInBuf =&ArgFeature;
p.dwInBufSize=sizeof(ArgFeature); p.pOutBuf =&ResFeature;
p.dwOutBufSize=sizeof(ResFeature); p.pBytesRet =NULL;
p.code =ORD_GET_LAST_STATUS; int dwSize=sizeof(p);
HVCommand(hhv,CMD_HVAPI_CONTROL,&p,&dwSize); if(ResFeature.status==0)
{// 当状态值等于0时,表示摄像机图像采集正常 }
elseif(ResFeature.status==STATUS_FILE_INVALID)
{ // 当状态值不等于-18时,表示摄像机发生1次丢帧行为,在连续高速采集时, 1次丢帧行为可能包括1帧以上图像。 }
elseif(This->dwLastStatus==0xc0000012||This->dwLastStatus==0xc0000011)
{//此类传输错误能够自动恢复,不需要用户自己处理,用户可以通过查询此类错误, 来累计发生错误的次数 }