1.連接相機
Generic Interface for Cameras。這是爲了建立一個統一的API接口,這個接口可以用來操作GigE、USB、Camera link類型的工業相機。就是說先要看清楚所使用的工業相機是什麼接口的。
如果相機連上了,那怎麼知道這個相機的參數呢?這裏是通過GenlCam中的GenApi模塊來表示的,它用來表示相機的功能和控制方法。這個模塊被解析成GenApi Node Maps,相機的每個具體的參數對應一個Node。
參數對應上了之後又如何將相機打開呢?還有有的時候項目中需要用到多個相機,怎麼知道這個相機是所需要連接的相機呢?這裏需要GenCam的另外一個模塊GenTL,用它發現枚舉相機以及獲取圖像。由於接口類無法直接生成,需要用傳輸層工廠來獲取。
CTlFactory& TlFactory = CTlFactory::GetInstance();
ITransportLayer* pTl = TlFactory.CreateTl( CBaslerGigECamera::DeviceClass() );
如果要枚舉相機,則用下面的代碼,其中“BaslerGigE”爲相機的DeviceClass,可以在前面獲取相機的參數中得到
CTlFactory& TlFactory = CTlFactory::GetInstance();
ITransportLayer * pTl = TlFactory.CreateTl("BaslerGigE");
DeviceInfoList_t lstDevices;
2.獲取圖像
連上了相機還需要獲取圖片,這裏用的抓圖的函數是StartGrabbing(),具體的抓圖方式有One by One Grab Strategy、
Latest Image Only Grab Strategy、Latest Images Strategy、Upcoming Image Grab Strategy。第一種是獲取最早在隊列中的函數,第二種是獲取最新的一幅,第三種也是最新的但是隊列滿了會清除舊的圖像,第四種要CInstantCamera::RetrieveResult() 調用才能採集,
eg: mBaslerCamera.StartGrabbing(GrabStrategy_LatestImageOnly);
未完待續.......
https://blog.csdn.net/liyuanbhu/article/details/74613768
https://blog.csdn.net/y363703390/article/details/79077735
https://so.csdn.net/so/search/s.do?q=basler&t=blog&u=liyuanbhu