有無圖像沒圖像
是否黑屏黑屏,白屏,花屏
是否亮燈亮紅燈
是否開機不開機
故障設備找不到相機
如圖,每個相機可能有不同的流采集器(Grab Streamer)或同一接口上安裝了多個相機(也對應多個流采集器),對應多個通道(Channel)。對每個通道來說,在實際采集時數據傳輸實際上是拆分成如圖的數據包(Packet) RawData形式傳遞的,內存中存儲形式為一維數組,在每一幀圖像的起始存在不同的標識表明一幀的開始和結束,每一個Packet都有標識表明當前所屬的通道。為了顯示圖像,用戶程序需要重新將一維數組數據拼裝成圖像形式,這一過程由用戶完成,通常可借助OpenCV或MIL等圖像處理包完成該操作。
可以看到相機編程需要做三方面工作:
1.初始化操作
先初始化相機驅動Com環境,然后遍歷得到當前的相機列表,根據相機ID或List 編號選擇對應相機。
之后連接相機,先設置本次采集的相機參數(幀速、圖像大小、縮放比等),然后是分配和注冊當前DMA隊列,這里有的是用戶完成,有的是SDK完成。
之后先開啟DMA邏輯等待相機采圖,然后使相機開始工作采圖,整個系統就按照之前工作流程運作起來了,許多SDK將“開啟DMA”和“相機開始工作”合并為“開始采集”。
2.結束操作
先停止相機工作再關閉DMA邏輯,許多SDK將“開啟DMA”和“相機開始工作”合并為“結束采集”。
然后清理DMA隊列,和分配時對應,這里有的是用戶完成,有的是SDK完成。
后斷開相機并清理工作環境。
Basler Pylon工業相機SDK的使用
Pylon庫有C++ .Net等各種封裝版本,一般用C++版本,功能*效率高,但對于不同接口(GigE USB3.0 CameraLink)的相機必須對應使用不同的類,之間不能通用。
基于GenAPI通用相機抽象接口使用的是Node結構,以字符串形式訪問相機參數,可以統一管理不同接口類型的相機。但效率低,使用不方便。
Pylon高層用C++封裝,形成本地相機對象
如何管理多個相機,靠譜的方法是按相機ID標定順序,需要讀一個配置文件,比如XML或JSON,然而一開始不知道ID,需要先列舉出來。
隨著科技的日漸成熟,工業相機得到了飛速發展。近幾年國外的工業相機廠商快速崛起,成為機器視覺領域的,比較有代表性的有:basler相機、灰點相機等。下面我們來看一下工業相機的主要參數:
1.分辨率:是指該像元傳感器對不同光波的敏感特性,一般響應范圍是350nm-1000nm,一些相機在靶面前加了一個濾鏡,濾除紅外光線,如果系統需要對紅外感光時可去掉該濾鏡。
2.像素深度:這個參數也在一定程度上影響著圖像質量的好壞。
3.幀率:這個參數是相機采取傳輸圖像速率的一個重要的衡量標準,對于一般的面陣相機一般為每秒采集的幀數,對于大多數線陣相機為每秒采集的行數,這是選擇工業相機時得考慮的**的一個參數
4.曝光方式:不同的工業相機有著不同的曝光方式。線陣相機一般采用的是逐行曝光方式,面陣相機一般采用幀曝光和滾動行曝光,還有一些面陣相機才用的是場曝光。
5.像元尺寸:像元大小和分辨率共同決定了相機的靶面的大小。而相機靶面有對圖像的成像質量有著很大的影響。一般情況下,像元的尺寸越小,越難制造,但是越小的像元成像的質量也就越高。
6.接口類型:不同的工業相機有著不同的接口類型。主要有GIGE千兆網、USB2.0、USB3.0、Camera Link1394A、1394B、等多種類型的接口
http://www.minepool.cc