基于Qt的Sapera LT开发

基于Qt来开发Sapera LT,需要经过以下几个步骤:

1. 在建立的Qt工程添加Sapera LT的相关路径

(1)右键工程—Properties

(2)Configuration Properties—C/C++—General—Additional Include Directories

(3)添加Basic和Include的路径

(4)Configuration Properties—Linker—General—Additional Library Directories

(5)添加Lib路径

(6)Configuration Properties—Linker—Input—Additional Dependences

(7)添加corapi.lib和SapClassBasic.lib

2. 在建立的工程中,添加头文件SapClassBasic

#include "SapClassBasic.h"

注意:这里只能用Basic类,不能用基于MFC开发的GUI类。

3. 在工程类中声明Sapera LT的各类

 
  1. private: //私有变量

  2. SapLocation *pLocLft;

  3. SapAcquisition *pAcqLft;

  4. SapBuffer *pBufferLft;

  5. SapAcqToBuf *pTransferLft;

4. 在工程类中声明回调函数

 
  1. public:

  2. static void XferCallbackLft(SapXferCallbackInfo *pInfoLft); //回调函数

注意:回调函数的极其重要,在每次传完一帧图像后,会自动调用回调函数。如果要实时处理图像数据,应该将图像处理函数放在里面。

5. 定义采集、缓存、传输类,并使能

 
  1. pAcqLft=new SapAcquisition(SapLocation("Xcelera-CL_PX4_2",0),"PtGrey_2048_2048.ccf" ); //采集

  2. pBufferLft=new SapBuffer(1,pAcqLft); //buffer

  3. pTransferLft=new SapAcqToBuf(pAcqLft, pBufferLft, XferCallbackLft, this); //传输链路

  4.  
  5. bool successLft=pAcqLft->Create();

  6. successLft=pBufferLft->Create();

  7. successLft=pTransferLft->Create();

6. 定义回调函数

 
  1. void LftCapt::XferCallbackLft(SapXferCallbackInfo *pInfoLft)

  2. {

  3. LftCapt *pGrabQtLft=(LftCapt *) pInfoLft->GetContext();

  4.  
  5. //-------------------------------------------------------------------------

  6. //采集内存图像数据

  7. pGrabQtLft->pBufferLft->GetAddress((void**)&pBufDatLft);

  8.  
  9. //内存中图像尺寸特征

  10. int heightBufLft=0,widthBufLft=0,pitchBufLft=0;

  11. heightBufLft=pGrabQtLft->pBufferLft->GetHeight();

  12. widthBufLft=pGrabQtLft->pBufferLft->GetWidth();

  13. pitchBufLft=pGrabQtLft->pBufferLft->GetPitch();

其中,虚线以上部分是回调函数定义的固定格式。

7. 工程退出时,delete对象(注意顺序)

 
  1. delete pTransferLft;

  2. delete pBufferLft;

  3. delete pAcqLft;

转:https://blog.csdn.net/lyc_daniel/article/details/9065475

猜你喜欢

转载自blog.csdn.net/eric_e/article/details/82957062