【Machine Vision】Dalsa 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. 基础应用类(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™ 相机获得图像. 可导入相机配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值