IDS相机内部函数学习

uEye 相机 V4.91用户手册
https://en.ids-imaging.com/manuals/uEye_SDK/ZH/uEye_Manual_4.91.1/index.html
是完全按照看官方源程序一步一步看过来,不会的就查资料,下面是我学习时不会然后百度函数的一个例子
D:\Program Files\IDS\uEye\Develop\Source\SimpleAcquire

1
VOID   InitCommonControls(void);

注册和初始化常用控件窗口类。这个函数已经过时了。新的应用程序应该使用
BOOL InitCommonControlsEx(
LPINITCOMMONCONTROLSEX lpInitCtrls
);
从公共控件动态链接库(DLL)注册特定的公共控件类。
如果成功返回TRUE,否则返回FALSE。
INITCOMMONCONTROLSEX结构的地址,该结构包含指定要注册哪些控件类的信息。

2
VOID AfxEnableControlContainer ();

备注:在应用程序对象的InitInstance函数中调用此函数,以支持OLE控件的包含。

3
void SetRegistryKey(LPCTSTR lpszRegistryKey);
void SetRegistryKey(UINT nIDRegistryKey);

参数
lpszRegistryKey指针,指向一个包含键名的字符串。
nIDRegistryKey注册表中键的ID/索引。
导致应用程序设置存储在注册表中,而不是INI文件中。这个函数设置m_pszRegistryKey,然后由CWinApp的GetProfileInt、GetProfileString、WriteProfileInt和WriteProfileString成员函数使用。如果调用了这个函数,最近使用的(MRU)文件列表也存储在注册表中。注册表项通常是公司的名称。它以如下形式的键存储
HKEY_CURRENT_USER\Software<company name><application name><section name><value name>.

4
BOOL WriteProfileString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszValue);

如果成功,返回值非零;否则0。
参数
lpszSection指向以null结尾的字符串,该字符串指定包含条目的部分。如果该节不存在,则创建它。该节的名称与大小写无关;字符串可以是大小写字母的任何组合。
lpszEntry指向一个以null结尾的字符串,该字符串包含要写入值的条目。如果条目不存在于指定的部分中,则创建它。
lpszValue指向要写入的字符串。如果该参数为NULL,则删除lpszEntry参数指定的条目。
备注:调用此成员函数将指定的字符串写入应用程序s注册表或. ini文件的指定部分。
示例
CString strSection = “My Section”;
CString strStringItem = “My String Item”;
CString strIntItem = “My Int Item”;

CWinApp* pApp = AfxGetApp();

pApp->WriteProfileString(strSection, strStringItem, “test”);

CString strValue;
strValue = pApp->GetProfileString(strSection, strStringItem);
ASSERT(strValue == “test”);

pApp->WriteProfileInt(strSection, strIntItem, 1234);
int nValue;
nValue = pApp->GetProfileInt(strSection, strIntItem, 0);
ASSERT(nValue == 1234);

4
ASSERT( booleanExpression )

参数
boolean表达式指定一个表达式(包括指针值),其结果是非0或0。
备注
评估其参数。如果结果为0,宏将打印一条诊断消息并中止程序。如果条件非零,它什么也不做。

5
SetCursor函数建立光标形状。

HCURSOR SetCursor(HCURSOR // handle to cursor);
参数
hCursor
指针的句柄。游标必须由CreateCursor创建,或者由LoadCursor或LoadImage函数加载。如果该参数为NULL,光标将从屏幕上删除。Windows 95:游标的宽度和高度必须是getsystemmetrics函数为SM_CXCURSOR和SM_CYCURSOR返回的值。此外,光标位深度必须与显示的位深度匹配,否则光标必须是单色的。
返回值是前一个游标的句柄(如果有的话)。如果之前没有游标,则返回值为NULL。
// Set mouse to hourglass
SetCursor(AfxGetApp()->LoadStandardCursor(IDC_WAIT));

6
HIDS	m_hCam;			// handle to camera

HIDS全称是Host-based Intrusion Detection System,即基于主机型入侵检测系统。作为计算机系统的监视器和分析器,它并不作用于外部接口,而是专注于系统内部,监视系统全部或部分的动态的行为以及整个计算机系统的状态。

7
INT is_ImageFormat (HIDS hCam, UINT nCommand, void *pParam, UINT nSizeOfParam)

说明

你可以使用 is_ImageFormat() 查询可实现图像尺寸(配置文件)列表,并设置新的配置文件。此方法适用于不支持对 AOI 或图像格式进行自由选择的传感器。驱动程序可通过 AOI、像素合并/子抽点或缩放功能,对已选择的图像尺寸进行设置,从而实现最佳图像质量。这样做的目的是为了实现以最低的数据速率获得最大的视野。要查看完整的可用图像配置文件列表,请参阅相机和传感器数据章节。
输入参数 nCommand 用于选择函数模式。输入参数 pParam 取决于所选的函数模式。如选择设定或返回值的函数,pParam 包含 UINT 类变量的一个指针。pParam 所指的内存区大小在输入参数 nSizeOfParam 中指定。

8
语法

INT is_GetSensorInfo (HIDS hCam, SENSORINFO* pInfo)

说明

is_GetSensorInfo() 函数用于查询相机所用传感器的类型。

9

INT is_AOI (HIDS hCam, UINT nCommand, void* pParam, UINT nSizeOfParam)

说明

is_AOI() 可用于设置图像感兴趣区域(AOI)的大小和位置。请根据传感器型号而非图像数据来设置 AOI。可以定义如下 AOI:
•图像 AOI - 显示部分图像
•自动亮度 AOI - 自动亮度控制参考感兴趣区域
•自动白平衡 AOI - 自动白平衡控制参考感兴趣区域
图像AOI位置和大小的可用步长取决于传感器。定义AOI位置和大小的值必须为允许步长的整数倍。

10
语法

INT is_SetHardwareGain (HIDS hCam, INT nMaster, INT nRed, INT nGreen, INT nBlue)

说明

is_SetHardwareGain() 用于控制传感器传感器增益通道。这些增益通道的值可设为0 %到100 %之间,且互不影响。通道100 %的值获取的实际增益因子取决于传感器

11
语法

INT is_PixelClock(HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)

说明

函数用于返回像素时钟的可调范围和设定像素时钟。如果USB相机的像素时钟过大,则可能导致传输过程中图像丢失。如果您修改当前正在运行的像素时钟,将会中断当前的图像捕捉过程。
像素时钟范围视相机型号和操作模式而定。

12
语法

INT is_SetFrameRate (HIDS hCam, double FPS, double* newFPS)

说明

is_SetFrameRate() 函数用于在自由运行模式(实况模式)下设置传感器帧率。因帧率取决于传感器的时序 ,实际使用的曝光时间可能会与此处设置的值有细微差别。调用该函数后,通过 newFPS 参数返回实际帧率。
如果帧率设置过高,可能不能传输每一个单帧。在这种情况下,有效帧率可能与设置值有偏差。

13
语法

INT is_Exposure (HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)

说明

使用 is_Exposure() 函数查询相机支持的曝光时间范围并设置新的曝光时间。

14
INT is_SetHardwareGain (HIDS hCam, INT nMaster, INT nRed, INT nGreen, INT nBlue)

说明

is_SetHardwareGain() 用于控制传感器传感器增益通道。这些增益通道的值可设为0 %到100 %之间,且互不影响。通道100 %的值

15
语法

INT is_SetColorCorrection (HIDS hCam, INT nEnable, double* factors)

说明

在彩色相机上,is_SetColorCorrection() 函数用于在 uEye 驱动内启用色彩校正。这改善了配有色彩传感器相机的色彩渲染功能。色彩校正是基于色彩矩阵的数字校正,色彩矩阵根据不同的传感器做出相应调整。

16
语法

INT is_ParameterSet(HIDS hCam, UINT nCommand, void* pParam, UINT cbSizeOfParam)

说明

is_ParameterSet() 函数可用于将当前相机参数保存到文件或相机的用户内存中,以及从文件或用户内存中加载参数集。
请注意,以下设置仅保存在参数文件中,而不会保存在相机的用户内存中:
•长时间曝光设置
•彩色模式设置

// 从文件中加载参数(“打开文件”对话框)
INT nRet = is_ParameterSet(m_hCam, IS_PARAMETERSET_CMD_LOAD_FILE, NULL, NULL);

17
语法

INT is_FreeImageMem (HIDS hCam, char* pcImgMem, INT id)

说明

is_FreeImageMem() 函数用于释放通过 is_AllocImageMem() 函数分配的图像内存,从驱动管理中移除。

18
Syntax

INT is_AOI (HIDS hCam, UINT nCommand, void* pParam, UINT nSizeOfParam)

说明

is_AOI() 可用于设置图像感兴趣区域(AOI)的大小和位置。请根据传感器型号而非图像数据来设置 AOI。可以定义如下 AOI:
•图像 AOI - 显示部分图像
•自动亮度 AOI - 自动亮度控制参考感兴趣区域
•自动白平衡 AOI - 自动白平衡控制参考感兴趣区域
图像AOI位置和大小的可用步长取决于传感器。

AOI示例2
通过IS_RECT类型的对象返回AOI位置和大小

IS_RECT rectAOI;

INT nRet = is_AOI(hCam, IS_AOI_IMAGE_GET_AOI, (void*)&rectAOI, sizeof(rectAOI));
if (nRet == IS_SUCCESS)
{
INT x = rectAOI.s32X;
INT y = rectAOI.s32Y;
INT width = rectAOI.s32Width;
INT height = rectAOI.s32Height;
}

AOI示例3
//返回UINT对象,表明是否就X轴位置设置了

IS_AOI_IMAGE_POS_ABSOLUTE。
UINT nAbsPos = 0;

INT nRet = is_AOI(hCam, IS_AOI_IMAGE_GET_POS_X_ABS, (void*)&nAbsPos , sizeof(nAbsPos ));
if (nRet == IS_SUCCESS)
{
if (nAbsPos == IS_AOI_IMAGE_POS_ABSOLUTE)
{
// 已设置
}
else if (nAbsPos == 0)
{
// 未设置
}
}

19
语法

INT is_SetColorMode (HIDS hCam, INT Mode)

说明

is_SetColorMode() 函数用于设置显卡在保存或显示图像数据时所使用的色彩模式。因此,分配的图像内存须能足够容纳选定色彩模式后的数据。当图像直接传输到显卡中时,确保显示设置与色彩模式设置相匹配。否则,图像显示会变色或模糊不清。

20
语法

INT is_AllocImageMem (HIDS hCam, INT width, INT height, INT bitspixel, char** ppcImgMem, INT* pid)

说明

is_AllocImageMem() 函数用于为某图像分配内存,该图像的尺寸由 width 和 height 确定,色彩位深由 bitspixel 确定。内存大小:
size = [width * int((bitspixel + 7) / 8)] * height
行增量的计算方法为:
lineinc = width * int[(bitspixel + 7) / 8]
您可以通过 is_GetImgMemPitch() 函数读出行增量。
ppcImgMem 返回内存起始地址
pid 返回已分配内存的ID。新分配的内存不会立即处于激活状态,即数字化的图像不会立即存储在新内存中。必须首先使用 is_SetImageMem() 函数激活新分配的内存。
由于所有的 ImageMem 函数都会用到返回的指针,因此必须对返回的指针进行写保护且不可对其做任何更改。可以使用 is_FreeImageMem() 函数激活新分配的内存。

21
语法

INT is_SetImageMem (HIDS hCam, char* pcImgMem, INT id)

说明

is_SetImageMem() 用于将指定的图像内存变为活动内存。只有活动图像内存可以接收图像数据。在调用 is_FreezeVideo() 时,捕捉的图像会存储在 pcImgMem 和 id 指定的图像缓冲区中。捕捉的图像会存储在 pcImgMem 和 id 指定的图像缓冲区中。对于 pcImgMem,您必须传递 is_AllocImageMem() 创建的指针,传递任何其他指针均会发出错误信息。您可以多次传递同样的指针。

22
语法

INT is_ExitCamera (HIDS hCam)

说明

is_ExitCamera() 函数用于禁用hCam 相机句柄并释放uEye相机占用的数据结构和内存。相机会自动释放经 is_AllocImageMem() 函数分配的图像内存。

23
PostQuitMessage函数

向系统表明某个线程发出了终止(退出)请求。它通常用于响应WM_DESTROY消息。VOID PostQuitMessage(int nExitCode //退出代码)

24
语法

INT is_FreezeVideo (HIDS hCam, INT Wait)

说明

is_FreezeVideo() 函数用于从相机中采集单张图像。在DIB模式下,图像存储在活动图像内存中。如果在DIB模式下使用了环形缓冲,则捕获的图像会传输到环形缓冲序列的下一个可用的图像内存中。当最后一个可用的内存被填满时,会触发序列事件或消息。

25
语法

INT is_RenderBitmap (HIDS hCam, INT nMemID, HWND hwnd, INT nMode)

说明

is_RenderBitmap() 函数用于在指定窗口中输出图像内存中的图像。您可使用Windows位图功能显示图像。图像的显示格式已在分配图像内存时指定。
is_AllocImageMem() 函数的 bitspixel 参数定义了色彩位深和显示类型。RGB16和RGB15内存需求相同,但可以通过 bitspixel 参数区分。

26
CMenu* GetSystemMenu(BOOL bRevert);

如果bRevert为FALSE,则返回值标识控件菜单的副本。如果bRevert为真,则返回值未定义。返回的指针可能是临时的,不应该存储起来供以后使用。
参数
bRevert指定要采取的操作。
如果bRevert为FALSE, GetSystemMenu返回当前使用的控件菜单副本的句柄。此副本最初与控件菜单相同,但可以修改。如果bRevert为真,GetSystemMenu将控件菜单重置为默认状态。前一个控件菜单(可能已修改)将被销毁。在这种情况下,返回值是未定义的。

27
语法

INT is_CaptureVideo (HIDS hCam, INT Wait)

说明

is_CaptureVideo() 函数用于激活相机的实时视频模式(自由运行模式)。驱动将图像传送至分配的内存中,在使用 Direct3D/OpenGL 的情况下,驱动将图像传输到显卡内。is_AllocImageMem() 函数用于创建内存, is_SetImageMem() 函数用于激活该图像内存,图像数据(DIB模式)便存储在此内存中。 is_GetImageMem() 函数,可用于查询该图像内存的地址。
如果使用了环形缓冲,图像捕捉函数会在所有存储图像的内存中按图像捕捉顺序进行无限循环。由 is_LockSeqBuf() 如果最后一个可用的序列内存已被填满,如果最后一个可用的序列内存已被填满,则会触发序列事件或消息。图像捕捉通常会从环形阵列的第一个位置开始。
如果在触发模式下调用is_CaptureVideo()函数,相机将进入连续触发待机状态。每收到一个电子触发信号,相机就会捕捉一张图像,并立即准备就绪等待再次触发。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值