Dalsa公司PX4图像采集卡+P4线阵彩色相机的开发

本文以最近使用的Dalsa公司的P4-CC-02K04T彩色线阵相机和Xcelera-CL_PX4图像采集卡为例讲述线阵相机的简单用法。新手初用,如有错误,欢迎指正。

P4-CC-02K04T彩色线阵相机

P4系列是Dalsa最新推出的高性能多线扫描数字相机,基于线阵CMOS传感器结构。P4-2k线阵相机的分辨率为2k,像元大小为14.08um*14.08um,行频最高可达40KHz。

P4彩色三线CMOS传感器提供单独图像捕获区域,并可输出每个通道(红、绿、蓝)的颜色信息,以获取最佳的彩色还原性和性能。相机的CameraLink接口使用高级芯片,传输距离可达15米以上。

Xcelera-CL_PX4图像采集卡

X64 Xcelera系列充分利用了PCI Express的平台,将传统的图像采集和处理技术的性能和灵活性提升至新的水平。PCIe的点对点技术不需要字体总线负载,只要消耗极低的CPU,即可同时进行图像的采集和传输。采集图像速率高达1GB/s,向主机内存传输图像速率高达1GB/s。

相机控制软件

相机控制软件基于Dalsa公司的CamExpert软件提供的Demo编写。

注:CamExpert软件生成的.ccf文件主要用来配置采集卡,向相机中写参数需要用到CamExpert软件中的Camera Information设置的Power-upConfiguration选项。

1. 首先需要在CamExpert软件上熟悉相机的控制,配置相机,产生对应.ccf配置文件。

2. 熟读CamExpert的Demo程序,在此基础上自己实现一个简单的Demo程序,走通相机采图的流程。下面简要说一下采集卡、线阵相机控制有关的类和函数。

3个必不可少的类:

(控制与板卡相连的采集设备:SapAcquisition)(管理转移过程SapTransfer)(操作buffer资源  SapBuffer)

一个相机采图的回调函数:XferCallback

初始化与采集操作步骤:

1. 使用SapAcqisition class定义所需器件和相机配置文件

2. 使用SapBuffer class(或SapBufferWithTrash class)创建buffer来存储图像。

3. 如有必要,使用SapView class分配显示区显示图像

4. 使用SapTransfer class(或Specialized Transfer Classes)进行采集,如需对图像进行处理或者显示请使用传输回调函数。

5. 为生成的对象(acquisition, view, buffer, and transfer)分配资源,使用对应的Create函数。

6. 利用SapTransfer类采集图像。

7. 采集完成后释放所有资源。

8. Delete所有生成的new对象。

简单示例程序Demo:

//Transfer callback function is called each time a complete frame is transferred.
//The function below is a user defined callback function
 
void XferCallback(SapXferCallbackInfo *pInfo)
{
    //Display the last transferred frame
    SapView *pView = (SapView *)pInfo->GetContext();
    pView->Show();
    
}
//Example Program
//
main()
{
    //Allocate acquisition object
    SapAcqisition *pAcq = 
        new SapAcqisition(SapLocation("X64-CL_1", 0), "MyCamera.ccf");
    
    //Allocate buffer object, taking settings directly from the acquisition
    SapBuffer *pBuffer = new SapBuffer(1, pAcq);
    
    //Allocate view object, images will be displayed directly on the desktop
    SapView *pView = new SapView(pBuffer, SapHwndDesktop);
    
    //Allocate transfer object to link acquisition and buffer
    SapTransfer *pTransfer = new SapTransfer(XferCallback, pView);
    pTransfer->AddPair(SapXferPair(pAcq, pBuffer));
    
    //Create resources for all objects
    BOOL success = pAcq->Create();
    success = pBuffer->Create();
    success = pView->Create();
    success = pTransfer->Create();
    
    //start a Continuous transfer(live grab)
    success = pTransfer->Grab();
    printf("Press any key to stop grab\n");
    getch();
    
    //Stop the transfer and wait (timeout = 5 seconds)
    success = pTransfer->Freeze();
    success = pTransfer->Wait(5000);
    Printf("Press any key to terminate\n");
    getch();
    
    //Release resources for all objects
    success = pTransfer->Destroy();
    success = pView->Destroy();
    success = pBuffer->Destroy();
    success = pAcq->Destroy();
    
    //Free all objects
    delete pTransfer;
    delete pView;
    delete pBuffer;
    delete pAcq;
    
    return 0;
}


 

相机及采集卡的图像的控制在此基础上结合CamExpert软件提供的Demo进行编写,就能实现实现简单的线阵相机采图控制了。

猜你喜欢

转载自blog.csdn.net/leo_888/article/details/81078113