Sapera幫助文檔

轉載mark

簡介: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介紹

二.例程介紹
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相機採集、保存圖像並顯示。

  1. 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™ 相機獲得圖像. 可導入相機配置文件

  2. 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。

  1. 使用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,並使採集同步。

  1. 實現圖像採集的編程步驟:
    第一步:使用SapAcquisition class確定採集設備與相機配置文件;
    第二步:使用SapBuffer class創建buffer存儲圖像;
    第三步:使用SapView class分配顯示對象顯示圖像;
    第四步:使用SapTransfer class分配轉換對象(transfer object)用於連接採集設備與圖像buffer。當採集過程中需要處理或顯示圖像時,要調用transfer 回調(callback)功能。
    第五步:使用各自類的Create功能爲所有對象分配資源(acquisition, view, buffer, transfer)
    第六步:使用SapTransfer class採集圖像
    第七步:當採集完畢後釋放所有資源。

  2. 圖像採集具體例子:
    (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:在已存在的對象上創建

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章