2. GUI类:
提供了许多常用设置对话框,用户可根据自己的需要选用;其结构如下图所示。
Sapera GUI介绍 名 称 CAbortDlg CAcqConfigDlg CAcqDlg CAScanDlg CBayerOptionsDlg CBufDlg CCabDlg CCompDlg CDspDlg CFlatFieldDlg CGioInputDlg CImageWnd CLoadSaveDlg CLScanDlg CPixProDlg CViewDlg 功 能 是SapTransfer::Wait 功能的改进,允许中断后等待不确定的时间 导入相机配置文件(CCF),建立新的SapAcquisition 对象,可调用CAcqConfigDlg:: GetAcquisition 得到此文件 动态修改采集设备参数 动态修改面阵相机参数 Bayer转换参数选择对话框 改变SapBuffer对象的参数 动态修改CAB参数 动态修改合成视频输入信号参数 选择文件导入DSP内存 操作平场校正 获得/设置输出设备信息 操作图像显示窗口、滚动条、ROI区域等 保存/导入图像至SapBuffer对象 动态修改线阵相机参数 修改SapPixPro对象的参数 动态修改显示区域
二.例程介绍
1. examples 介绍
Sapera\\Examples\\Classes\\SapExamples.dsw (for Visual C++ 6.0)
Sapera\\Examples\\Classes\\SapExamples_2003.sln (for Visual Studio .NET 2003) Sapera\\Examples\\Classes\\SapExamples_2005.sln (for Visual Studio 2005) Sapera\\Examples\\Classes\\SapExamples.bpg (for Borland C++ Builder) ? FileLoadCPP 功能:演示由磁盘加载图片至buffer并显示。Buffer根据图像文件格式进行创建。能够加载多种类型的图像文件(如monochrome, RGB, or YUV)。此例使用Sapera C++ API。 ? FileLoadMFC 功能:与FileLoadCPP Example功能一致,但使用了Sapera++ GUI浏览文件夹。 ? GrabCPP 功能:由选定相机采集图像至buffer中并显示。Buffer根据相机设置进行创建,任何相机(CameraLink或GigE相机)都能适用。此例使用Sapera C++ API。 ? GrabLut 功能:保存、载入lookup-table至硬件过程hardware processing engine,并将图像进行所选Lut的处理并显示。 ? GrabMFC 功能:与GrabCPP Example功能一致,但使用了Sapera++ GUI。 ? GrabMFC 功能:与GrabCPP功能一致,但使用GUI Sapera++类,通过对话框选择板卡与相机。 ? ColorSplit 功能:显示怎样分裂和融合彩色图像至单色部分。如载入一RGB图像,将之分为3个单色部分,而后分别对单色部分进行图像处理,处理后融合为RGB图像进行输出。 ? FindGigECamera 功能:检测所有已连接的GigE相机名称、序列号、服务名等,通过改变代码,可实现改变相机名称的功能。 ? GigECameraLut 功能:由已选择的GigE相机采集图像至内存,并显示怎样使能、保存和载入lookup-table至硬件hardware processing engine,并显示经过所选Lut变换后的图像。 ? GigECameraEvents 功能:使用CorAcqDevice列出所有可用设备 ? GigEAutoWhiteBalance 功能:使用CorAcqDevice在GigE彩色相机中应用自动白平衡,可更改buffer设置并存储原始设置,并给出怎样通过已选择的GigE相机采集、保存图像并显示。
2. Demos介绍
Sapera\\Demos\\Classes\\Vc\\SapDemos.dsw (for Visual C++ 6.0)
Sapera\\Demos\\Classes\\Vc\\SapDemos_2003.sln (for Visual Studio .NET 2003) Sapera\\Demos\\Classes\\Vc\\SapDemos_2005.sln (for Visual Studio 2005) Sapera\\Demos\\Classes\\Vc\\SapDemos.bpg (for Borland C++ Builder) ? Grab Demo (Dialog Box Interface 对话框) 路径:\\Sapera\\Demos\\Classes\\Vc\\GrabDemo\\Release\\GrabDemo.exe 功能:显示了基本的采集功能,允许获得连续或单帧图像,同时调整采集参数 ? Grab Demo (Single Document Interface 单文档) 路径:\\Sapera\\Demos\\Classes\\Vc\\GrabDemoSDI\\Release\\GrabDemoSDI.exe 功能:显示了基本的采集功能,允许获得连续或单帧图像,同时调整采集参数 ? Grab Demo (Multiple Document Interface 多文档) 路径:\\Sapera\\Demos\\Classes\\Vc\\GrabDemoMDI\\Release\\GrabDemoMDI.exe 功能:显示了基本的采集功能,允许获得连续或单帧图像,同时调整采集参数; 可打开多窗口来同步获得不同相机的显示图像 ? Sequential Grab Demo 路径:\\Sapera\\Demos\\Classes\\Vc\\SeqGrabDemo\\Release\\SeqGrabDemo.exe 功能:采集序列图像至内存而后显示,程序允许录制多段视频,并可存储、导入AVI文件。每一图像存储于不同buffer中,可通过对话框设置buffer大小等参数。 ? Bayer Demo 路径:\\Sapera\\Demos\\Classes\\Vc\\BayerDemo\\Release\\BayerDemo.exe 功能:显示Bayer 转换功能,进行Bayer转换参数设置。 ? Flat-field Demo 路径:\\Sapera\\Demos\\Classes\\Vc\\FlatFieldDemo\\Release\\FlatFieldDemo.exe 功能:显示平场校正功能。平场校正Flat Field Correction (FFC) 包括调整模式噪声Fixed Pattern Noise (FPN),像素置换 Pixel Replacement, Photo Response Non Uniformity (PRNU), 和斑点校正 Shading Correction. ? I/O Demo 路径:\\Sapera\\Demos\\Classes\\Vc\\IODemo\\Release\\IODemo.exe 功能:显示一般I/O设备的使用,允许监视当前输入输出状态,改变高低极性状态;允许监视输入中断并记录中断数。 ? GigE-Vision Camera Demo 路径:\\Sapera\\Demos\\Classes\\Vc\\GigeCameraDemo\\Release\\GigeCameraDemo.exe 功能:怎样使用DALSA GigE Vision? 相机获得图像. 可导入相机配置文件 3. ActiveX控件
Sapera\\Demos\\ActiveX\\Vb6\\SapActiveXDemos.vbg (for Visual Basic 6.0)
Sapera\\Demos\\ActiveX\\.NET\\SapActiveXDemos_2003.sln (for Visual Studio .NET 2003) Sapera\\Demos\\ActiveX\\.NET\\SapActiveXDemos_2005.sln (for Visual Studio 2005) Sapera\\Demos\\ActiveX\\Delphi\\SapActiveXDemos.bpg (for Borland Delphi 7) 对ActiveX控件的使用操作详见Sapera LT ActiveX Controls Manual
常用操作 编程步骤介绍
一、加载动态连接库步骤: 1. 使用Basic Classes:
① 在Project | Settings… | C/C++ | Preprocessor | Additional include directories 中加入路径C:\\DALSA\\Sapera\\Classes\\Basic;
②在Project|Add to Project | Files 中加入C:\\DALSA\\Sapera\\Lib\\SapClassBasic.lib 和 SapClassBasicD.lib;
③在 Project | Settings…| General中将SapClassBasic.lib 选为Exclude file from build; ④在Project | Settings… | C/C++ | Code Generation | Use run-time library中选择choose the option Multithreaded DLL (在release模式下) or Debug Multithreaded DLL (在debug模式下) ;
⑤在头文件中加入SapClassBasic.h。
2. 使用GUI:
① 在Project | Settings… | C/C++ | Preprocessor | Additional include directories 中加入路径C:\\DALSA\\Sapera\\Classes\\Gui;
②在Project|Add to Project | Files 中加入C:\\DALSA\\Sapera\\Lib\\SapClassGui.lib 和 SapClassGuiD.lib;
③在 Project | Settings…| General中将SapClassBasic.lib 选为Exclude file from build for Win32 Release;
④ 在In Project | Settings… | C/C++ | Code Generation | Use run-time library中选择choose the option Multithreaded DLL (在release模式下) or Debug Multithreaded DLL (在debug模式下) ;
⑤在头文件中加入SapClassGui.h。
二.开发的一般步骤: 1.为对象分配内存 2.为对象创建资源 3.释放对象资源 4.释放对象内存
三.获得图像:
1. 获得图像所需的类:
? SapAcquisition 或SapAcqDevice:当使用相机连接采集卡采集时用 SapAcquisition
class ;当相机直接连接电脑时(比如GigE相机)用SapAcqDevice class ; ? SapBuffer: 用来存储数据,可以选择buffer的存储类型;
? SapTransfer: 用来连接外部的获取图像设备和buffer,并使采集同步。
2. 实现图像采集的编程步骤:
第一步:使用SapAcquisition class确定采集设备与相机配置文件; 第二步:使用SapBuffer class创建buffer存储图像; 第三步:使用SapView class分配显示对象显示图像;
第四步:使用SapTransfer class分配转换对象(transfer object)用于连接采集设备与图
像buffer。当采集过程中需要处理或显示图像时,要调用transfer 回调(callback)功能。
第五步:使用各自类的Create功能为所有对象分配资源(acquisition, view, buffer, transfer) 第六步:使用SapTransfer class采集图像 第七步:当采集完毕后释放所有资源。
3. 图像采集具体例子: (1)基本图像采集过程
功能:创建、实例化、释放各个对象
路径:C:\\DALSA\\Sapera\\Help\\User’s Manual – Acquiring Images – Frame-Grabber
Acquisition Example – Steps to perform an acquisition
备注: 其中的“void XferCallback(SapXferCallbackInfo *pInfo)”函数在每一帧转移完成后
自动调用一次,用户可在此内添加图像处理操作或显示操作
(2) 更改采集参数
? 实例1:
功能:使用SapAcquisition::SetParameter单独修改“独立参数”
路径:C:\\DALSA\\Sapera\\Help\\User’s Manual – Acquiring Images – Modifying the
Frame-Grabber Parameters – Modifying Parameters Individually
备注: 如需得到各参数定义等详细信息,请参考Sapera++ Programmer’s Manual
and the Sapera Basic Modules Reference Manual帮助文档
? 实例2:
功能:成组修改采集参数
路径:C:\\DALSA\\Sapera\\Help\\User’s Manual – Acquiring Images – Modifying the
Frame – Grabber Parameters – Modifying Parameters by Group
? 实例3:
功能:使用LUT
路径:C:\\DALSA\\Sapera\\Help\\User’s Manual - Acquiring Images – Using an Input
Lookup Table
备注:使用函数SapAcquisition::GetLut;SapAcquisition::ApplyLut ? 实例4:
功能:使用Genie M640 相机采集
备注:相机配置文件可使用相机的默认设置,还可使用CamExpert自行设置,在
SapAcqDevice类初始化后,创建buffer,并在SapAcqDevice类和SapBuffer类之间创建转移路径(此例中使用SapAcqDeviceToBuf)。要想使转换停止,须调用SapTransfer::Wait
(3)相机参数的获得与修改
? 实例1:
功能:获得相机信息
路径:C:\\DALSA\\Sapera\\Help\\User’s Manual – Acquiring Images – Modifying the
Camera Features – Accessing Feature Information and Values
备注:SapAcqDevice 类允许直接修改相机参数文件,一些参数须同时一起修改