Dalsa 線掃相機采集


  之前使用同事遺留代碼。代碼里面gige相機用“SapAcqDevice”類,采集卡用“SapAcquisition” 。現在需要更改相機增益和曝光。通過組合提升拍攝適應性。然后,因為之前同事留的坑,並且dalsa自帶的gui示例沒有涉及相機增益和曝光設置。所以一直繞着“SapAcquisition”這個類搜索,只找到

    BOOL b = m_Acq->GetParameter(CORACQ_PRM_CONNECTOR_EXPOSURE_INPUT,&exposureTime);

  增益沒找到“CORACQ_PRM”開頭設置。只有最大最小值相關。相反,“SapAcqDevice” 設置曝光和增益很簡單。只是前面先入為主,人為是gige用的類。后面問凌雲,給出如下說明

  

 

  以及如下示例:

  

// Allocate acquisition object

   SapAcquisition *pAcq = new SapAcquisition(SapLocation (“X64-CL_1”, 0), “FrameGrabber.ccf”);

 

// Allocate acqDevice object 

   SapAcqDevice *pAcqDevice = new SapAcqDevice (SapLocation (“CameraLink_1”, 0), “CLCamera.ccf”);

 

 

   // Allocate buffer object, taking settings directly from the acquisition

   SapBuffer *pBuffer = new SapBuffer(2, 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 SapAcqToBuf(pAcq, pBuffer, XferCallback, pView);// 在該TrasferPair中pAcq代表該源pBuffer代表目的地;

 

   // Create resources for all objects

   BOOL success = pAcq->Create();

   success = pAcqDevice->Create();

   success = pBuffer->Create();

   success = pView->Create();

   success = pTransfer->Create();

 

 

 

  

   m_Acq->RegisterCallback(CORACQ_VAL_EVENT_TYPE_FRAME_LOST , frameLostCallback , NULL) ;

   m_Acq->RegisterCallback(CORACQ_VAL_EVENT_TYPE_EXTERNAL_TRIGGER , ExtTrigCallback , NULL) ;

 

 

 

   success = pAcq-> GetParameter(CORACQ_PRM_CROP_WIDTH , & imageWidth);

   success = pAcq-> GetParameter(CORACQ_PRM_CROP_HEIGHT  , & imageHeight );

   int paramValue ;

   success = pAcqDevice -> SetFeature(“ExposureTime”, & paramValue);

 

 

 

 

 

 

   // 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);

   success = pTransfer->Abort();

 

   printf("Press any key to terminate\n");

   getch();

 

   // Release resources for all objects

   success = pTransfer->Destroy();

   success = pView->Destroy();

   success = pBuffer->Destroy();

   success = pAcqDevice ->Destroy();

   success = pAcq->Destroy();

 

   // Free all objects

   delete pTransfer;

   delete pView;

   delete pBuffer;

   delete pAcqDevice;

   delete pAcq;

 

 

   return 0;

  倆個同時使用。一個是加載采集卡參數,一個是使用相機名稱作為連接。上面的例子都要輸入ccf。 采集的ccf來源都清楚。 相機的ccf如圖示獲得(左上角File-》另存為——》彈出的窗口選擇保存文件名和保存路徑):

 

 

 

  如果不想更改相機配置,使用以下構造函數

SapAcqDevice(SapLocation location = SapLocation::ServerSystem, BOOL readOnly = FALSE);

 

  之類設置曝光(參數名“”)和明場(參數名,"")。

double paramValue=200,gainValue =2;
pAcqDevice -> SetFeature(“ExposureTime”, & paramValue);
pAcqDevice -> SetFeature(“Gain”, & gainValue);
//設置每個通道增益(以下代碼來源版權聲明:本文為CSDN博主「圓滾熊」的原創文章,  原文鏈接:https://blog.csdn.net/y459541195/article/details/100706850)

  m_AcqDevice->SetFeatureValue("GainSelector","DigitalAll");//設定總增益
  m_AcqDevice->SetFeatureValue("Gain", dlg2.m_edit_GainAll);
  m_AcqDevice->SetFeatureValue("GainSelector", "DigitalRed");//R通道增益
  m_AcqDevice->SetFeatureValue("Gain", dlg2.m_edit_GainRed);
  m_AcqDevice->SetFeatureValue("GainSelector", "DigitalGreen");//G通道增益
  m_AcqDevice->SetFeatureValue("Gain", (double)1.0);
  m_AcqDevice->SetFeatureValue("GainSelector", "DigitalBlue");//B通道增益
  m_AcqDevice->SetFeatureValue("Gain", dlg2.m_edit_GainBlue);

  ————————————————
  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM