简介:Sapera LT 是一套用于图像采集、显示和控制的独立于硬件以外的 C 和 C++ 软件库,支持所有 DALSA Coreco 硬件平台。它的综合功能集包括程序可移植性、多样化的相机控制、灵活的显示和管理功能,以及易于使用的应用开发向导。Sapera LT 与 Microsoft Visual Studio C/C++、.Net、Visual Basic 6.0 和 Borland C++ Builder 兼容,支持 Windows XP、2000 和 NT 平台。
一. Sapera++介绍
Sapera++是Sapera LT为用户提供的API. Sapera++ 包含两大类:基础应用类(Basic Classes)和GUI类(GUI Classes)
1. 基础应用类(Basic Classes):
提供了用户进行图像开发的基本函数
命名方式为Sap+类功能名
其结构如下图所示:
Sapera Basic Class 函数功能介绍:
l Data Classes:
功能:下属多个数据类,每一个数据类管理了一种特定数据类型
下属数据类:
SapData Class
SapDataHSI Class
SapDataHSV Class
SapDataFloat Class
SapDataFPointClass
SapDataFRGB Class
SapDataMono Class
SapDataPoint Class
SapDataRGB Class
SapDataRGBA Class
SapDataYUV Class
l SapAcquisition
功能:控制与板卡相连接的采集设备
常用函数:
SapAcquisition::SapAcquisition
SapAcquisition::Create
SapAcquisition::Destroy
SapAcquisition::ApplyLut
SapAcquisition::GetParameter
SapAcquisition::SetParameter
SapAcquisition::GetSignalStatus
SapAcquisition::IsSignalStatusAvailable
l SapAcqCallbackInfo
功能:存储SapAcquisition类回调的内容
常用函数:
SapAcqCallbackInfo::GetContext
SapAcqCallbackInfo::GetSignalStatus
l SapAcqDevice
功能:由设备读、写信息,还可直接发送、寄存事件至设备。常用于直接连接电脑的相机(如GigE相机)
常用函数:
SapAcqDevice::SapAcqDevice
SapAcqDevice::Create
SapAcqDevice::Destroy
SapAcqDevice::GetConfigFile
SapAcqDevice::SetConfigFile
SapAcqDevice::UpdateFeaturesFromDevice
l SapAcqDeviceCallbackInfo
功能:存储SapAcqDevice类回调的内容
常用函数:
SapAcqDeviceCallbackInfo::SapAcqDeviceCallbackInfo
SapAcqDeviceCallbackInfo::GetAcqDevice
l SapBayer
功能:Bayer转换操作(分为软件和硬件实现两种)
常用函数:
SapBayer::WhiteBalance
SapBayer::EnableLut
SapBayer::GetAlign
SapBayer::SetAlign
SapBayer::GetWBGain
SapBayer::SetWBGain
l SapBuffer
功能:操作buffer资源
常用函数:
SapBuffer::SapBuffer
SapBuffer::Create
SapBuffer::Clear
SapBuffer::Destroy
SapBuffer::GetParameter
SapBuffer::SetParameter
SapBuffer::GetPitch
SapBuffer::GetPixelDepth
SapBuffer::SetPixelDepth
SapBuffer::GetIndex
SapBuffer::SetIndex
SapBuffer::GetCount
SapBuffer::SetCount
SapBuffer::GetFrameRate
SapBuffer::SetFrameRate
SapBuffer::Next
l SapBufferRemote
功能:Buffer远程使用(需用SapBuffer::Register事先定义)
常用函数:
SapBufferRemote::SapBufferRemote
SapBufferRemote::Create
l SapBufferRoi
功能:在已存在的SapBuffer对象中创建方形ROI区域
常用函数:
SapBufferRoi::SapBufferRoi
SapBufferRoi::Create
l SapBufferWithTrash Class
功能:建立称为trash buffer的附加资源。常用于实时图像处理操作中,当数据传送速度比处理速度快时,图象将被保存在trash buffer中,直到能够稳定输出
常用函数:
SapBufferWithTrash::SapBufferWithTrash
SapBufferWithTrash::Create
l SapCab
功能:操作CAB资源的功能,更详细帮助见Sapera CAB Programmer’s Manual.
l SapCounter
功能:记录事件,可记录外部信号或内部信号(如硬件时钟)
常用函数:
SapCounter::SapCounter
l SapCounterCallbackInfo
功能:存储SapCounter类回调的内容
常用函数:
SapCounterCallbackInfo::SapCounterCallbackInfo
SapCounterCallbackInfo::GetCounter
l SapDisplay
功能:操作默认显示资源
常用函数:
SapDisplay::Create
SapDisplay::GetDC
SapDisplay::GetWidth
l SapDsp
功能:操作DSP资源
l SapFeature
功能:得到SapAcqDevice类的特征信息,如姓名、类型、连接模式等
使用SapAcqDevice::GetFeatureInfo访问
常用函数:
SapFeature::GetLocation
SapFeature::SetLocation
l SapFlatField
功能:单色图像平场校正功能
常用函数:
SapFlatField::ComputeGain
SapFlatField::ComputeOffset
l SapGio
功能:控制输入和输出设备使之读写同步,常与SapCounter联合使用读取I/O设备的状态
常用函数:
SapGio::AutoTrigger
SapGio::EnableCallback
l SapGioCallbackInfo
功能:存储SapGio类回调的内容
常用函数:
SapGioCallbackInfo::GetPinNumber
l SapGraphic
功能:在图像中绘制或书写文字(首先通过SapView::GetDC获得句柄)
常用函数:
SapGraphic::Text
l SapLocation
功能:识别Saperaserver/resource对(物理设备的抽象表示)
常用函数:
SapLocation::GetResourceIndex
SapLocation::GetServerName
l SapLut
功能:管理look up table(首先使用SapAcquisition::GetLut 获得SapLut对象,操作完成LUT后使用 SapAcquisition::ApplyLut记录)
常用函数:
SapLut::Arithmetic
SapLut::BinaryPattern
SapLut::Threshold
l SapManager
功能:描述当前系统上的Sapera资源,同时包括错误管理功能
常用函数:
SapManager::GetCommandTimeout
SapManager::SetCommandTimeout
l SapManCallbackInfo
功能:存储SapManager类回调的内容
常用函数:
SapManCallbackInfo::GetErrorMessage
l SapPerformance
功能:基准评估功能,评估一个buffer所占用的时间
常用功能:
SapPerformance::GetTimeMicro
SapPerformance::Reset
l SapPixPro
功能:操作像素处理设备,作为中间转换节点,允许数据由采集设备传递到下一个转换节点
l SapPixProParams
功能:存储SapPixPro类回调的内容
l SapProcessing
功能:用于管理用户自己的processing
l SapProCallbackInfo
功能:存储SapManager类回调的内容
l SapTransfer
功能:管理转移过程
常用函数:
SapTransfer::Create
SapTransfer::Freeze
SapTransfer::Grab
SapTransfer::Snap
SapTransfer::Wait
SapTransfer::Abort
SapTransfer::IsGrabbing
SapTransfer::GetPair
l Specialized Transfer Classes
功能:特别转换类(一系列从属于SapTransfer的类,使用户方便操作许多常用的转移节点)
常用转换类:
SapAcqToBuf Class
SapAcqDeviceToBufClass
SapCabToBuf Class
SapBufToBuf Class
SapAcqToCab Class
SapCabToCab Class
SapBufToCab Class
l SapView
功能:通过SapDisplay对象显示存放在SapBuffer中的资源,SapView和SapTransfer的同步性使得能够实时显示buffer中的数据而不会出现丢失数据的情况。
常用函数:
SapView::SapView
SapView::Show
SapView::Create
SapView::Destroy
SapView::GetDC
SapView::GetDisplay
SapView::SetDisplay
SapView::OnHScroll
SapView::OnMove
SapView::OnPaint
l SapViewCallbackInfo
功能:存储SapView类回调的内容
l SapXferCallbackInfo
功能:存储SapTransfer类回调的内容(一帧图像转移完成后自动调用XferCallback)
常用函数:
SapXferCallbackInfo::GetContext
SapXferCallbackInfo::IsTrash
l SapXferPair
功能:描述了SapTransfer class的一对源与目的地
常用函数:
SapXferPair::GetFramesPerCallback
SapXferPair::SetFramesPerCallback
l SapXferParams
功能:存储SapTransfer类需传递的参数信息
l SapXferNode
功能:操作转换节点。
其中,常用类:
SapAcquisition:控制与板卡相连接的设备
SapBuffer:操作buffer
SapBufferWith Trash:实时处理时建立trash buffer用于存放转换数据(常用于处理速度跟不上数据采集速度时)
SapTransfer:管理一般的传递过程
SapView:显示buffer中存储的内容至屏幕
2.GUI类(GUI Classes):
提供了许多常用设置对话框,用户可根据自己的需要选用;其结构如下图所示
其中,常用对话框:
CAbortDlg:等待对话框
CAcqConfigDlg:相机配置文件导入对话框
CAcqDlg:动态修改相机设置
CBufDlg:Buffer设置对话框
CLoadSaveDlg:导入与保存对话框
二. 开发步骤
1. 加载动态连接库步骤:
(1)使用Basic Classes:
① 在Project | Settings… | C/C++ | Preprocessor | Additional includedirectories 中加入路径C:\DALSA\Sapera\Classes\Basic;
②在Project|Addto 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 MultithreadedDLL (在release模式下) or Debug Multithreaded DLL (在debug模式下) ;
⑤在头文件中加入SapClassBasic.h
(2)使用GUI:
① 在Project | Settings… | C/C++ | Preprocessor | Additional includedirectories 中加入路径C:\DALSA\Sapera\Classes\Gui;
②在Project|Addto 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-timelibrary中选择choose theoption Multithreaded DLL (在release模式下) or Debug Multithreaded DLL (在debug模式下) ;
⑤在头文件中加入SapClassGui.h
2. 初始化与采集操作步骤:
①使用SapAcquisitionclass定义所需器件和相机配置文件;
②使用SapBufferclass(或SapBufferWithTrashClass)创建buffer来存储图像;
③使用SapViewclass分配显示区显示图像;
④使用SapTransferclass(或SpecializedTransfer Classes)进行采集;
⑤采集完成后释放所有资源
参考C:\DALSA\Sapera\Help\User’sManual-Acquiring Images 与Demo"GrabDemo"
3. 对buffer的操作
(1) 修改buffer大小:
参考C:\DALSA\Sapera\Help\User’sManual-Working with buffers- Reading and Writing a Buffer
(2) 子buffer的应用:
参考C:\DALSA\Sapera\Help\User’sManual- Working with buffers- Root and Child Buffers
(3) 获得buffer首地址及偏移量(常用于进行进一步图像处理):
参考C:\DALSA\Sapera\Help\User’sManual-Working with buffers- Reading and Writing a Buffer
三. 使用帮助文档与demo
如须获得完整的demo与帮助文档
选择full安装
并选择全部
帮助文档中的SaperaLT User’s Manual提供Sapera LT的全面概要介绍;Sapera++ Programmer’s Manual提供Sapera++ Basic 和 GUI classes中所有函数及功能介绍
可参考其进行编程工作
在C:\DALSA\Sapera\Demos\Classes\VC中提供了多个开发Demo供用户参考
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 FieldCorrection (FFC) 包括调整模式噪声FixedPattern 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
功能:怎样使用DALSAGigE Vision™ 相机获得图像. 可导入相机配置文件