Sapera帮助文档
简介: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. 基础应用类:
提供了用户进行图像开发的基本函数,命名方式为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
功能:管理lookup 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
功能:操作转换节点
2. GUI类:
提供了许多常用设置对话框,用户可根据自己的需要选用;其结构如下图所示。
Sapera GUI介绍
名 称 |
功 能 |
CAbortDlg |
是SapTransfer::Wait 功能的改进,允许中断后等待不确定的时间 |
CAcqConfigDlg
|
导入相机配置文件(CCF),建立新的SapAcquisition 对象,可调用CAcqConfigDlg:: GetAcquisition 得到此文件 |
CAcqDlg |
动态修改采集设备参数 |
CAScanDlg |
动态修改面阵相机参数 |
CBayerOptionsDlg |
Bayer转换参数选择对话框 |
CBufDlg |
改变SapBuffer对象的参数 |
CCabDlg |
动态修改CAB参数 |
CCompDlg |
动态修改合成视频输入信号参数 |
CDspDlg |
选择文件导入DSP内存 |
CFlatFieldDlg |
操作平场校正 |
CGioInputDlg |
获得/设置输出设备信息 |
CImageWnd |
操作图像显示窗口、滚动条、ROI区域等 |
CLoadSaveDlg |
保存/导入图像至SapBuffer对象 |
CLScanDlg |
动态修改线阵相机参数 |
CPixProDlg |
修改SapPixPro对象的参数 |
CViewDlg |
动态修改显示区域 |
二.例程介绍
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)
l FileLoadCPP 功能:演示由磁盘加载图片至buffer并显示。Buffer根据图像文件格式进行创建。能够加载多种类型的图像文件(如monochrome, RGB, or YUV)。此例使用Sapera C++ API。 |
l FileLoadMFC 功能:与FileLoadCPP Example功能一致,但使用了Sapera++ GUI浏览文件夹。 |
l GrabCPP 功能:由选定相机采集图像至buffer中并显示。Buffer根据相机设置进行创建,任何相机(CameraLink或GigE相机)都能适用。此例使用Sapera C++ API。 |
l GrabLut 功能:保存、载入lookup-table至硬件过程hardware processing engine,并将图像进行所选Lut的处理并显示。 |
l GrabMFC 功能:与GrabCPP Example功能一致,但使用了Sapera++ GUI。 |
l GrabMFC 功能:与GrabCPP功能一致,但使用GUI Sapera++类,通过对话框选择板卡与相机。 |
l ColorSplit 功能:显示怎样分裂和融合彩色图像至单色部分。如载入一RGB图像,将之分为3个单色部分,而后分别对单色部分进行图像处理,处理后融合为RGB图像进行输出。 |
l FindGigECamera 功能:检测所有已连接的GigE相机名称、序列号、服务名等,通过改变代码,可实现改变相机名称的功能。 |
l GigECameraLut 功能:由已选择的GigE相机采集图像至内存,并显示怎样使能、保存和载入lookup-table至硬件hardware processing engine,并显示经过所选Lut变换后的图像。 |
l GigECameraEvents 功能:使用CorAcqDevice列出所有可用设备 |
l GigEAutoWhiteBalance 功能:使用CorAcqDevice在GigE彩色相机中应用自动白平衡,可更改buffer设置并存储原始设置,并给出怎样通过已选择的GigE相机采集、保存图像并显示。 |
2. Demos介绍
Sapera\Demos\Classes\Vc\SapDemos.dsw (forVisual 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)
l Grab Demo (Dialog Box Interface 对话框) 路径:\Sapera\Demos\Classes\Vc\GrabDemo\Release\GrabDemo.exe 功能:显示了基本的采集功能,允许获得连续或单帧图像,同时调整采集参数 |
l Grab Demo (Single Document Interface 单文档) 路径:\Sapera\Demos\Classes\Vc\GrabDemoSDI\Release\GrabDemoSDI.exe 功能:显示了基本的采集功能,允许获得连续或单帧图像,同时调整采集参数 |
l Grab Demo (Multiple Document Interface 多文档) 路径:\Sapera\Demos\Classes\Vc\GrabDemoMDI\Release\GrabDemoMDI.exe 功能:显示了基本的采集功能,允许获得连续或单帧图像,同时调整采集参数; 可打开多窗口来同步获得不同相机的显示图像 |
l Sequential Grab Demo 路径:\Sapera\Demos\Classes\Vc\SeqGrabDemo\Release\SeqGrabDemo.exe 功能:采集序列图像至内存而后显示,程序允许录制多段视频,并可存储、导入AVI文件。每一图像存储于不同buffer中,可通过对话框设置buffer大小等参数。 |
l Bayer Demo 路径:\Sapera\Demos\Classes\Vc\BayerDemo\Release\BayerDemo.exe 功能:显示Bayer 转换功能,进行Bayer转换参数设置。 |
l 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. |
l I/O Demo 路径:\Sapera\Demos\Classes\Vc\IODemo\Release\IODemo.exe 功能:显示一般I/O设备的使用,允许监视当前输入输出状态,改变高低极性状态;允许监视输入中断并记录中断数。 |
l 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 选为Excludefile from build;
④在Project |Settings… | C/C++ | Code Generation | Use run-time library中选择choose theoption Multithreaded DLL (在release模式下) or DebugMultithreaded 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 选为Excludefile from build for Win32 Release;
④ 在In Project | Settings… | C/C++ | Code Generation |Use run-time library中选择choose the option Multithreaded DLL (在release模式下) or DebugMultithreaded DLL (在debug模式下) ;
⑤在头文件中加入SapClassGui.h。
二.开发的一般步骤:
1.为对象分配内存
2.为对象创建资源
3.释放对象资源
4.释放对象内存
三.获得图像:
1. 获得图像所需的类:
l SapAcquisition 或SapAcqDevice:当使用相机连接采集卡采集时用 SapAcquisition class ;当相机直接连接电脑时(比如GigE相机)用SapAcqDevice class ;
l SapBuffer: 用来存储数据,可以选择buffer的存储类型;
l 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 – AcquiringImages – Frame-Grabber Acquisition Example – Steps toperform an acquisition
备注:其中的“voidXferCallback(SapXferCallbackInfo *pInfo)”函数在每一帧转移完成后自动调用一次,用户可在此内添加图像处理操作或显示操作
(2) 更改采集参数
l 实例1:
功能:使用SapAcquisition::SetParameter单独修改“独立参数”
路径:C:\DALSA\Sapera\Help\User’sManual – AcquiringImages – Modifying the Frame-Grabber Parameters – Modifying Parameters Individually
备注: 如需得到各参数定义等详细信息,请参考Sapera++ Programmer’s Manual and the SaperaBasic Modules Reference Manual帮助文档
l 实例2:
功能:成组修改采集参数
路径:C:\DALSA\Sapera\Help\User’sManual – AcquiringImages – Modifying the Frame – Grabber Parameters – Modifying Parameters by Group
l 实例3:
功能:使用LUT
路径:C:\DALSA\Sapera\Help\User’sManual - Acquiring Images – Using an Input Lookup Table
备注:使用函数SapAcquisition::GetLut;SapAcquisition::ApplyLut
l 实例4:
功能:使用Genie M640 相机采集
备注:相机配置文件可使用相机的默认设置,还可使用CamExpert自行设置,在SapAcqDevice类初始化后,创建buffer,并在SapAcqDevice类和SapBuffer类之间创建转移路径(此例中使用SapAcqDeviceToBuf)。要想使转换停止,须调用SapTransfer::Wait
(3)相机参数的获得与修改
l 实例1:
功能:获得相机信息
路径:C:\DALSA\Sapera\Help\User’sManual – AcquiringImages – Modifying the Camera Features – Accessing Feature Information andValues
备注:SapAcqDevice 类允许直接修改相机参数文件,一些参数须同时一起修改
l 实例2:
功能:改变相机参数
路径:C:\DALSA\Sapera\Help\User’sManual - Acquiring Images-Modifying the CameraFeatures-Writing Feature Values by Group
备注:由于相机的许多参数需同时修改,SapAcqDevice 类将这一系列参数值先存在一个“internal cache”中,之后一起将数据送入相机。
四.图像显示操作
1.图像显示操作所需的类:
l SapDisplay:管理硬件显示设备实际资源
l SapBuffer:所要显示的数据
l SapView: 连接显示与buffer,并同步显示操作
2.图像显示实例:
(1)Display Example
功能:显示图像
路径:C:\DALSA\Sapera\Help\User’sManual - Displaying Images - Display Example
(2)Displaying in a Windows Application
功能:使用Windows应用程序显示图像
路径:C:\DALSA\Sapera\Help\User’s Manual-Displaying Images-Displaying in a WindowsApplication
备注:SapView Class 包含3个功能:OnPaint, OnMove, andOnSize,但不提供一些改变显示区的常用功能,如滚动条等,需使用时调用CImageWnd Class中的相应功能。详细使用见下面的例子
五.对Buffer的操作
1. 子Buffer操作
功能:子buffer的建立与ROI区域选择
路径:C:\DALSA\Sapera\Help\User’s Manual – Working with buffers – Root and Child Buffers
2. Buffer 类型介绍
路径:C:\DALSA\Sapera\Help\User’s Manual – Working with buffers – Buffer Types
3. 读写buffer数据信息
路径:C:\DALSA\Sapera\Help\User’sManual – Workingwith buffers –Reading and Writing a Buffer
l 事例1:读入数据至buffer
l 事例2:Read and Write methods
l 事例3:通过GetAddress得到数据首地址,并得到buffer尺寸、格式、偏移量来进 行进一步图像处理工作(要首先获得首地址再得到偏移量)。
4. buffer的建立与释放方法
路径:C:\DALSA\Sapera\Help\User’s Manual – Introducing the Sapera LT API – Object initialization and cleanup
l 事例1:使用指针创建
l 事例2:使用堆栈创建
l 事例3:在已存在的对象上创建
【转载】http://blog.csdn.NET/pamxy/article/details/8742462