Sapera帮助文档

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

你可能感兴趣的:(Sapera,Sapera帮助文档)