1. 程式人生 > >Halcon一日一練:影象裝置介紹

Halcon一日一練:影象裝置介紹

Halcon在設計之初就提供了完整的影象採集方案,適應了多種影象裝置採集影象,以及各種不同環境的採集方案。

通常情況下,影象的採集應該是所有機器視覺專案首要解決的任務,不幸的是,需要解決影象採集的問題,對應裝備的種類具有特殊性,以及非標準化的硬體裝置,比如,USB相機或IEEE1394相機,他們提供的物理介面及裝置驅動都完全不一樣。為了讓我們專注於機器視覺實際的問題,Halcon提供了大量的影象採集介面,通過這種快速介面,HALCON影象採集的程式碼量大為減少,只要幾行程式碼就能解決問題。 使用halcon我們可以獲取來自採集裝置和攝像頭在採集過程中,不同定時模式的各種配置,更重要的是,這種簡單不是以犧牲採集裝置的可用功能及效率為代價的。

除了從相機獲取影象,也可以採集的影象儲存在檔案中,HALCON也可以通過儲存在檔案的方式來輸入影象,檔案的格式支援:BMP,TIFF,GIF,JPEG,PNG,PNM,PCX,XWD.

採集影象和基本步驟:

      Halcon的採集影象基本包括三個步驟,從檔案中讀取影象更簡單,只需對操作:read_image進行單一獲取影象即可。採集影象的三個步驟是:

第一步:開啟影象採集裝置

第二步:採集影象

第三步:關閉影象採集裝置

第一步:開啟影象採集裝置:

如果你想獲得從影象採集卡或影象採集裝置的影象,例如,我們使用一個IEEE1394的攝像頭,第一步是連線該裝置,HALCON會幫助我們解除所有與該裝置實施的操作細節,我們需要做的只是呼叫函式open_framegrabber即可,並指定相應影象採集介面的名稱。

也有一種虛擬的影象採集介面,它以檔案的形式作為虛擬的影象採集介面。顧名思義,這種幀接收器讀取圖片來自檔案,也即所謂的影象序列檔案。後者是HALCON特定的檔案,通常帶有副檔名.seq,它們包含影象檔名,以換行分隔的列表(可以建立一個易於使用文字編輯器)。如果我們連線到這樣一個序列,後續呼叫該檔案中指定的順序grab_image返回影象。另外,我們也可以從一個特定的目錄中讀取所有影象。這樣不必建立一個序列檔案,而只是指定的目錄名。

呼叫grab_image返回指定的影象目錄中的影象。如果你想測試檔案序列的影象,以後需要切換到一個真實的物理影象採集裝置,這種應用程式 的兩種方法都是有效的。

第二步:獲取影象

一旦連線裝置成功,我們通過簡單地呼叫grab_image獲取影象。如果是從磁碟載入影象,我們可以使用read_image,從目前目錄和環境變數halconImages指定的目錄中搜索影象。

第三步:關閉影象採集裝置

在應用程式結束時,一定要通過close_framegrabber來關閉影象採集裝置的連線,以釋放其記憶體資源,同時如果其它系統需要呼叫該裝置,只有在關閉該裝置連線,其它系統呼叫才能成功。

採集影象常用的函式:

1:open_framegrabber:用於開啟裝置,或者獲取裝置資訊

2:set_framegrabber_param,:設定裝置引數,

3:get_framegrabber_param:獲取裝置引數,

4:grab_image,grab_image_async,採集影象

5:read_image:讀取影象

6:close_framegrabber:關閉採集裝置。

無法應用halcon採集裝置

除此之外,我們可能會遇到以下兩種情況:

1:我們可以對外部建立的影象使用運營商採用函式gen_image1,gen_image3,gen_image1_extern或gen_image3_extern

2:不支援的影象採集裝置

如果當前裝置不支援halcon,也就是說HALCON影象採集介面無法支援的影象採集裝置,我們也可以通過建立自己的interface來採集影象。