数字相机开发说明书(4)

2019-03-22 21:37

Else

{// 当状态值为其他非0值时,表示摄像机图像采集异常 }

//范例3:用于设置闪光灯输出信号

//闪光灯只有在触发采集状态下,才能输出有效信号 //正脉冲信号

strobe.Mode =SIGNAL_IMPULSE; strobe.Polarity=HIGH;

HVCommand(hhv,CMD_SET_STROBE_SIGNAL_MODE,&strobe,&nSize); //负脉冲信号

strobe.Mode =SIGNAL_IMPULSE; strobe.Polarity=LOW;

HVCommand(hhv,CMD_SET_STROBE_SIGNAL_MODE,&strobe,&nSize); //高电平信号

strobe.Mode =SIGNAL_LEVEL; strobe.Polarity=HIGH;

HVCommand(hhv,CMD_SET_STROBE_SIGNAL_MODE,&strobe,&nSize); //低电平信号

strobe.Mode =SIGNAL_LEVEL; strobe.Polarity=LOW;

HVCommand(hhv,CMD_SET_STROBE_SIGNAL_MODE,&strobe,&nSize);

2.1.2.2采集图像到内存

图像数据传输到计算机的内存中,用户可以对内存中的数据进行处理,也可以利用位图函 数将图像显示在计算机的屏幕上。

1.函数:HVSnapShot //摄像机采集若干帧图像数据到一组内存缓冲区中

原型:HVSTATUS__stdcall HVSnapShot (HHV hhv, BYTE **ppBuffer, int nSum) 参数:

HHV hhv; 摄像机句柄。

BYTE **ppBuffer; 图像数据缓冲区指针的列表。

Int nSum; 图像数据缓冲区数目(采集图像的数量)。 返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:摄像机采集若干帧图像数据到一组内存缓冲区中。图像数据缓冲区数目和大小由采 集图像的数量和尺寸决定,图像的宽度、高度等于当前图像输出窗口的宽度和高度,图像的大小(字节数)为:输出窗口宽×高。参见HVSetOutputWindow的函数说明。 范例:// 采集两幅图像到内存

//图像数据缓冲区的大小由图像的输出窗口决定 BYTE Buffer1[800*600]//第一幅图像的缓冲区 BYTE Buffer2[800*600]//第二幅图像的缓冲区 BYTE *ppBuffer[2];//图像数据缓冲区指针的列表 ppBuffer[0]=Buffer1; ppBuffer[1]=Buffer2;

HVSnapShot(hhv, ppBuffer, 2);

2.函数:HVOpenSnap //初始化摄像机采集图像到内存的控制

原型:HVSTATUS__stdcall HVOpenSnap(HHV hhv,HV_SNAPPROC pSnapFunc,void *pParam) 参数:

HHVhhv; 摄像机句柄。

HV_SNAPPROC pSnapFunc;指向回调函数。

Void *pParam; 指向用户定义参数,参数对应于回调函数参数HV_SNAP_INFO的 字段 pParam,它是传递给回调函数的。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:初始化摄像机采集图像到内存的控制,指定回调函数和用户定义的参数,分配资源。 在使用采集图像到内存的控制功能前,必须进行初始化。

用户可以在回调函数中编写自己的程序,例如图像处理程序、控制程序等。

通过回调函数定义的参数HV_SNAP_INFO,可以获得当前工作的摄像机的句柄、序号、图像缓冲区序号和用户定义的参数信息。

控制功能使用完毕,调用HVCloseSnap关闭。 参见:HVCloseSnap。

3.函数:HVCloseSnap

原型:HVSTATUS__stdcall HVCloseSnap(HHV hhv) 参数:

HHV hhv; 摄像机句柄。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:关闭采集图像到内存的控制,释放申请的资源。 参见:HVOpenSnap。

4.函数:HVStartSnap //启动采集。

原型:HVSTATUS__stdcallHVStartSnap(HHV hhv,BYTE **ppBuffer,intnSum) 参数:

HHV hhv; 摄像机句柄。

BYTE **ppBuffer; 图像数据缓冲区指针的列表。 Int nSum; 图像数据缓冲区数目(采集图像的数量)。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:启动摄像机循环采集若干图像到一组内存缓冲区的功能。图像数据缓冲区数目和大 小由采集图像的数量和尺寸决定。采集图像到内存控制的初始化成功后,启动该功能,摄像机开始循环采集图像数据到内存中,直到用户发出停止采集指令。在图像采集过程中,用户可以通过回调函数运行自己的程序,执行图像数据访问,系统控制等操作。回调函数的说明参见函数HVOpenSnap。停止摄像机采集操作,调用函数HVStopSnap。 参见:HVStopSnap。

5.函数:HVStopSnap //停止采集图像到内存。

原型:HVSTATUS__stdcall HVStopSnap(HHV hhv) 参数:

HHV hhv; 摄像机句柄。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:停止采集图像到内存。调用函数HVStartSnap可以再次启动采集。 参见:HVStartSnap。

6.函数:HVTriggerShot //触发方式采集一帧图像数据到内存。

原型:HVSTATUS__stdcall HVTriggerShot(HHV hhv) 参数:HHV hhv; 摄像机句柄。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:摄像机通过触发方式采集一帧图像数据到内存。使用该功能时,先要调用函数

HVSetSnapMode将摄像机设置为外触发方式,然后调用函数HVStartSnap打开摄像机采集图像。

参见:HVSetSnapMode,HVStartSnap。

7.函数:HVWaitSync //等待同步信号

原型:HVSTATUS__stdcall HVWaitSync(HHV hhv) 参数:

HHV hhv; 摄像机句柄。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:等待同步信号。同步信号的到来表示视频信号一帧的开始,函数返回时正是一帧的 开始,在需要控制图像的帧数时,可以通过调用该函数实现。 范例:HVWaitSync (hDevice1);

2.1.2.3错误处理

对系统运行状态和函数调用返回值的处理。 1.函数:HVGetErrorString

原型:char*__stdcall HVGetErrorString(HVSTATUS status) 参数:

HVSTATUS status; 错误代码。

返回值:返回指向错误代码说明的字符串指针。 说明:根据输入的错误代码,返回相应的说明。

2.1.2.4其它功能

一些附加的软/硬件应用功能。

1.函数:HVGetDeviceTotal //获取当前系统中摄像机的总数。

原型:HVSTATUS__stdcall HVGetDeviceTotal(int *pNumber) 参数:

Int *pNumber; 指向摄像机的总数。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。 说明:获取当前系统中摄像机的总数。

2.函数:HVGetDeviceInfo //读取摄像机的信息

原型:HVSTATUS__stdcallHVGetDeviceInfo(HHVhhv,HV_DEVICE_INFO Param,void *pContext, int *pSize) 参数:

HHVhhv; 摄像机句柄。

HV_DEVICE_INFOParam; 摄像机的信息。 void*pContext; 指向存放信息的缓冲区。 int*pSize; 信息数据的大小,以字节为单位。

返回值:调用成功,返回STATUS_OK,否则返回错误代码。

说明:读取摄像机的信息,包括设备类型、类型标识、序列号、分辨率、消隐的取值范围、 图像的Bayer格式等。其中获取图像Bayer格式的功能只有MV400Ux系列摄像机支持。 要获得摄像机的信息,首先要获得信息数据的大小,调用该函数,信息缓冲区的指针 pContext可为“NULL”,通过pSize获得信息数据的大小(以字节为单位)。使用pSize 的值申请存放信息的缓冲区,再次调用函数就可获得相应的设备信息了。 设备类型的值参见常量HVTYPE的定义。类型标识由2个字节组成, MV1300UC的板型为“V0” MV1301UC的板型为“U0”, MV2000UC的板型为“U1” MV2001UC的板型为“U2”, MV3000UC的板型为“U3” MV1300UM的板型为“U4”, MV1302UC 的板型为“U5”, MV2002UC 的板型为“U6”, MV3102UC的板型为“U7”, MV1302UM的板型为“U8”, MV1303UC的板型为“U9”, MV2003UC的板型为“UB”, MV3103UC的板型为“UC”, MV1303UM 的板型为“UD”, MV1350UC 的板型为“S0”, MV2050UC的板型为“S1”, MV3150UC的板型为“S2”, MV1350UM的板型为“S3”, MV1351UC的板型为“S4”, MV2051UC的板型为“S5”, MV3151UC的板型为“S6”, MV1351UM 的板型为“S7”。

序列号由12个字节组成,每个摄像机都有唯一的序列号。

摄像机分辨率的值为无符号整数类型(DWORD),分辨率以宽和高为一组,按数值由高到低排列,MV13xxUx系列摄像机的分辨率有1280*1024,640*512,320*256。 MV20xxUx系列摄像机的分辨率有1600*1200,800*600,400*300。

MV30xxUx系列摄像机的分辨率有2048*1536,1024*768,640*480,512*384。 消隐的取值范围由16个字节组成4个DWORD,由第0个DWORD开始分别是:

行消隐的最小取值,场消隐的最小取值,行消隐的最大取值,场消隐的最大取值。 摄像机的设备(硬件)版本号由2个字节组成,可用无符号的短整形数表示。 范例: //范例1

Int nBuffSize=0;

//首先要获得信息数据的大小

HVGetDeviceInfo(hhv,DESC_RESOLUTION,NULL,&nBuffSize); //再次调用函数获得设备分辨率的信息

BYTE *pbContext=newBYTE[nBuffSize]; DWORD *pdContext=(DWORD*)pbContext;

HVGetDeviceInfo(hhv,DESC_RESOLUTION,pdContext,&nBuffSize); //获得当前分辨率输出窗口的最大尺寸 //Resolution为摄像机当前分辨率

nMaxWidth=*(pdContext+2*Resolution); nMaxHeight=*(pdContext+2*Resolution+1); delete[]pbContext; //范例2

//获得消隐的取值范围 DWORDpBlankSize[4]; intnBufSize=0; intnHmin=0; intnVmin=0; intnHmax=2047; intnVmax=2047;

HVGetDeviceInfo(DESC_DEVICE_BLANKSIZE,NULL,&nBufSize); HVGetDeviceInfo(DESC_DEVICE_BLANKSIZE,pBlankSize,&nBufSize); nHmin=(int)pBlankSize[0]; nVmin=(int)pBlankSize[1]; nHmax=(int)pBlankSize[2]; nVmax=(int)pBlankSize[3];

3. 函数:HVCheckDevice

原型:HVSTATUS__stdcall HVCheckDevice(HHV hhv,HV_CHECK_PARAM Param,BOOL *pStatus) 参数:

HHV hhv; 摄像机句柄。 HV_CHECK_PARAM Param;查验参数,参数的定义参见HV_CHECK_PARAM结构说明。 这些参数由摄像机制造商提供。


数字相机开发说明书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:占用园林绿化带施工方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: