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 @   夕西行  阅读(951)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示