Dalsa相机SDK

1、使用的库类总结如下:

SapLocation类——设备的连接地址

SapAcquisition类——采集设备

SapBuffer类——缓存对象

SapTransfer类——传输对象

SapView类——显示缓存

其中需要注意的是SapAcquisition类操作的是与采集卡相连的设备,SapAcqDevice类操作的是直接与电脑相连的设备(如网口相机)

2、相机采集的控制

首先使用SapTransfer类创建指针对象*m_Xfer,之后进行如下控制:

开始采集:m_Xfer->Grab();

停止采集:m_Xfer->Freeze();

单张抓拍:m_Xfer->Snap();

3、参数获取

通过SapAcquisition类,可以获取一些参数,需要注意的是val的类型必须与featureName所对应的值类型一致,否则报错。

m_Acq->GetFeatureValue(featureName, out val));

常用参数统计如下:

4、SapBuffer类

SapBuffer类是图像处理中最重要的类,其中包含了具有相同维度、格式和类型的缓冲区资源。SapBuffer类对象可以使用SapView类显示并使用SapProcessing类处理。

程序中对SapBuffer类的图像定义了默认参数,如下图所示:

从上图中可以看出,默认的尺寸是640×480,位深8位,缓存数1张,

最常使用的构造函数如下:

SapBuffer(int count = SapDefBufferCount, int width = SapDefWidth, int height = SapDefHeight, SapFormat format = SapDefFormat, Type type = SapDefBufferType, SapLocation loc = SapLocation::ServerSystem);

 构造函数的参数可以用结构体的形式统一赋值,而不必单独赋值。其中的宽高可以从ccf中设置,如果ccf没有指定,则默认大小640×480。

SapBuffer有3中创建方式:

① 通过指针创建,也是最常用的方式

SapBuffer *pBuffer = new SapBuffer(1, 640, 480);
if (pBuffer->Create())
{
   // 对buffer进行处理
}
//注意释放
if (*pBuffer)
{
   pBuffer->Destroy(); //销毁缓存区资源
}
delete pBuffer; //释放内存
pBuffer = NULL; //置位

② 堆栈上创建

SapBuffer buffer(1, 640, 480);
if (buffer.Create())
{
// 对buffer进行处理
// 如果buffer不再使用
buffer.Destroy(); //销毁缓存区资源
}
//超出作用域,对象的内存自动销毁,不需要再手动销毁。

③ 从已有对象创建

从MFC的strFilePath的内存中创建
    USES_CONVERSION; //CString 转char*
    char* image=T2A(strFilePath.GetBuffer(0));
    m_Buffers=new SapBuffer(image);
释放参照方式①。

5、实战,参考我的github

【参考】

https://www.cnblogs.com/lgyup/p/4313332.html

https://www.docin.com/p-44962289.html

posted @ 2021-01-04 16:53  夕西行  阅读(905)  评论(0编辑  收藏  举报