連接到圖像采集卡
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1, ‘false’, CameraType, myBoard, -1, -1, AcqHandle)
使用操作符 open_framegrabber 打開與圖像采集設(shè)備的連接時,主要參數(shù)是相應(yīng) HALCON 采集接口的名稱。因此,您將獲得一個所謂的句柄 (AcqHandle),通過它您可以訪問圖像采集設(shè)備,例如,在調(diào)用操作者grab_image 時。
圖 2.1:a) 獲取的圖像;b) 處理過的圖像(自動分割)
在示例中,大多數(shù)其他參數(shù)使用默認(rèn)值(‘default’ 或 -1)
第 2 步:抓取圖像
grab_image (Image, AcqHandle)
成功連接到您的圖像采集設(shè)備后,您可以通過調(diào)用帶有相應(yīng)句柄 AcqHandle 的操作符grab_image 來抓取圖像。
第 3 步:循環(huán)抓取和處理圖像
while (Button != 1)
grab_image (Image, AcqHandle)
dev_set_window (WindowHandle)
dev_display (Image)
* -》 process image (segment with an automatically determined threshold)
auto_threshold (Image, Regions, 4)
connection (Regions, ConnectedRegions)
dev_set_window (WindowHandleProcess)
dev_display (ConnectedRegions)
* -》 check for a click into the window (error handling switched off, otherwise the cursor must always be in the window)
dev_set_check (‘~give_error’)
get_mposition (WindowHandleButton, Row, Column, Button)
dev_set_check (‘give_error’)
endwhile
在示例中,然后使用運(yùn)算符 auto_threshold 自動分割抓取的圖像(見圖 2.1)。這是在循環(huán)中完成的,可以通過用鼠標(biāo)左鍵單擊窗口來退出。
3、連接到您的圖像采集設(shè)備
在本節(jié)中,我們將展示如何連接到不同配置的圖像采集卡和相機(jī),從一個相機(jī)連接到一個圖像采集卡的簡單情況到更復(fù)雜的情況,例如多個同步相機(jī)連接到 一塊或多塊板。
3.1 打開指定配置的連接
用操作符 open_framegrabber,您可以打開與圖像采集設(shè)備的連接。這種連接由四個參數(shù)描述(見圖 3.1):首先,您選擇一個帶有參數(shù) Name 的采集接口。參數(shù) Device 指定實際的板卡或相機(jī);根據(jù)采集接口,該參數(shù)可以包含描述板的字符串或簡單的數(shù)字(以字符串的形式?。?。
通常,相機(jī)可以連接到不同端口的圖像采集卡,其數(shù)量可以通過參數(shù) Port(在極少數(shù)情況下為 LineIn)來選擇。參數(shù) CameraType 描述了連接的攝像頭:對于模擬攝像頭,該參數(shù)通常指定使用的信號范數(shù),例如,‘ntsc’。對于數(shù)碼相機(jī),此參數(shù)通常指定相機(jī)型號;更復(fù)雜的采集接口使用此參數(shù)來選擇相機(jī)配置文件。
因此,open_framegrabber 在參數(shù) AcqHandle 中返回打開連接的句柄。請注意,如果您使用 HALCON 的 COM 或 C++ 接口并通過相應(yīng)的類調(diào)用操作符,例如 C++ 中的 HFramegrabber,則不會返回句柄,因為類的實例本身充當(dāng)您的句柄。
使用 HDevelop 的圖像采集助手,您可以輕松連接到您的圖像采集設(shè)備并選擇合適的參數(shù)
3.2 連接多個板卡和攝像頭
大多數(shù) HALCON 采集接口允許使用多個圖像采集卡和相機(jī)。但是,連接攝像機(jī)和電路板以及從 HALCON 內(nèi)部訪問這些配置的方法不止一種。下面,我們描述不同的配置;請檢查您的圖像采集設(shè)備的 HALCON 接口的在線文檔(請參閱 %HALCONROOT%dochtmlmanuals、Windows 開始菜單中的 HALCON 文件夾,或 http://www.halcon.com/image-acquisition) 它支持哪些配置。
3.2.1 單攝像頭
圖 3.2a 顯示了最簡單的配置:單個攝像頭連接到單個板上,可通過單個手柄訪問。一些圖像采集卡,尤其是數(shù)字圖像采集卡,只支持這種配置;如以下部分所述,您仍然可以通過將每個攝像頭連接到單獨(dú)的電路板來使用具有此類圖像采集卡的多個攝像頭。請注意,此配置是通過 USB 2.0、IEEE 1394 或 GigE 連接的數(shù)碼相機(jī)的典型配置。
3.2.2 Multiple Boards
圖 3.2b 顯示了具有多個攝像頭的配置,每個攝像頭都連接到單獨(dú)的電路板。在這種情況下,您在 HDevelop 示例程序 solution_guideimage_acquisitionmultiple_boards.hdev 中為每個連接調(diào)用一次操作符 open_framegrabber。
圖 3.2:a) 單板單攝像頭;b) 多塊板,每塊帶一個攝像頭;c) 帶有一個或多個攝像頭的多塊板;d) 單板多攝像頭和端口切換;e) 單板多攝像頭同時抓??;f) 使用多個電路板和相機(jī)同時抓取
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1, ‘default’, ‘default’, Board0, -1, -1, AcqHandle0)
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1, ‘default’, ‘default’, Board1, -1, -1, AcqHandle1)
在此示例中,兩個調(diào)用僅在參數(shù) Device(“0”和“1”)的值上有所不同;當(dāng)然,您也可以為其他參數(shù)使用不同的值,甚至可以連接到不同的圖像采集接口。
要從兩個攝像頭抓取圖像,您只需使用兩次調(diào)用 open_framegrabber 返回的兩個句柄調(diào)用一次操作符grab_image:
grab_image (Image0, AcqHandle0)
grab_image (Image1, AcqHandle1)
3.2.3 每塊板有多個手柄
許多圖像采集卡提供多個輸入端口,因此允許將多個攝像頭連接到板上。根據(jù) HALCON 采集接口的不同,可以通過本節(jié)和以下各節(jié)中描述的不同方式訪問此配置。
連接相機(jī)的標(biāo)準(zhǔn)HALCON方法如圖3.2c所示:每個連接都有自己的句柄,即open_framegrabber為每個相機(jī)調(diào)用一次,參數(shù)Port的值不同,如HDevelop示例程序solution_guideimage_acquisition multiple_ports.hdev:
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1,
‘default’, ‘default’, Board0, Port0, -1, AcqHandle0)
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1,
‘default’, ‘default’, Board1, Port1, -1, AcqHandle1)
grab_image (Image0, AcqHandle0) grab_image (Image1, AcqHandle1)
如圖 3.2c 所示,您還可以使用多個板卡連接多個攝像頭
3.2.4 端口交換
一些圖像采集接口不通過多個手柄訪問相機(jī),而是通過動態(tài)切換輸入端口(見圖 3.2d)。因此,open_framegrabber 只被調(diào)用一次,就像在 HDevelop 示例程序 solution_guideimage_acquisitionport_switching.hdev 中一樣:
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1, ‘default’, ‘default’, ‘default’, 0, -1, AcqHandle)
在抓取圖像之間,您使用運(yùn)算符 set_framegrabber_param 切換端口
set_framegrabber_param (AcqHandle, ‘port’, Port0)
dev_set_window (WindowHandle0)
grab_image (Image0, AcqHandle)
set_framegrabber_param (AcqHandle, ‘port’, Port1)
dev_set_window (WindowHandle1)
grab_image (Image1, AcqHandle)
注意,端口切換僅適用于兼容(類似)相機(jī),因為 open_framegrabber 僅被調(diào)用一次,即所有相機(jī)使用相同的參數(shù)值集。相比之下,當(dāng)如上所述使用多個手柄時,您可以為各個相機(jī)指定不同的參數(shù)值(有一些特定于板的限制)。
3.2.5 同時抓?。▋H針對特定接口)
在上述配置中,圖像是通過多次調(diào)用操作者grab_image從單個相機(jī)中抓取的。相比之下,一些采集接口允許通過一次調(diào)用grab_image從多個攝像頭抓取圖像,然后返回多通道圖像(參見圖3.2e;第51頁的附錄A.1包含有關(guān)多通道圖像的更多信息) 。 這種模式稱為同時抓取(或并行抓?。?;與端口切換一樣,它僅適用于兼容(類似)的相機(jī)。例如,您可以使用此模式從立體相機(jī)系統(tǒng)中抓取同步圖像。請注意,同時抓取僅適用于極少數(shù)圖像采集接口。
在這種模式下,open_framegrabber 只被調(diào)用一次,可以在 HDevelop 示例程序 solution_guideimage_acquisitionsimultaneous_grabbing.hdev 中看到:
open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1, ‘default’, ‘default’, ‘default’, 0, -1, AcqHandle)
您可以使用運(yùn)算符 count_channels 檢查返回圖像(通道)的數(shù)量
grab_image (SimulImages, AcqHandle)
count_channels (SimulImages, num_channels)
并根據(jù)圖像數(shù)量提取單個圖像,例如使用分解2、分解3等:
if (num_channels == 2)
decompose2 (SimulImages, Image0, Image1)
或者,您可以使用 image_to_channels 將多通道圖像轉(zhuǎn)換為圖像數(shù)組,然后通過 select_obj 選擇單個圖像。
3.3 請求有關(guān)圖像采集接口的信息
如前所述,各個 HALCON 采集接口在 HTML 頁面上有詳細(xì)描述,這些頁面可以在目錄 %HALCONROOT%dochtmlmanuals 或 Windows 開始菜單的 HALCON 文件夾中找到(如果您安裝了文檔)。另一種訪問圖像采集接口信息的方法是使用操作符 info_framegrabber。
在HDevelop示例程序solution_guideimage_acquisitioninfo_framegrabber.hdev(為HALCON 1394IIDC接口預(yù)配置,請根據(jù)自己的圖像采集設(shè)備調(diào)整接口名稱)多次調(diào)用該算子查詢接口版本號、可用設(shè)備 ,端口號,相機(jī)類型,以及open_framegrabber所有參數(shù)的默認(rèn)值;結(jié)果,即 HDevelop 變量窗口中顯示的值,如圖 3.3 所示。
info_framegrabber (AcqName, ‘general’, GeneralInfo, GeneralValue)
info_framegrabber (AcqName, ‘revision’, RevisionInfo, RevisionValue) info_framegrabber (AcqName, ‘info_boards’, BoardsInfo, BoardsValue) info_framegrabber (AcqName, ‘generic’, GenericInfo, GenericValue)
info_framegrabber (AcqName, ‘camera_type’, CamTypeInfo, CamTypeValue) info_framegrabber (AcqName, ‘defaults’, DefaultsInfo, DefaultsValue)
在使用 open_framegrabber 實際連接到圖像采集設(shè)備之前,可以調(diào)用操作符 info_framegrabber。唯一的條件是已經(jīng)安裝了HALCON采集接口和設(shè)備驅(qū)動和SDK。
審核編輯 :李倩
-
圖像采集
+關(guān)注
關(guān)注
2文章
299瀏覽量
41276 -
相機(jī)
+關(guān)注
關(guān)注
4文章
1350瀏覽量
53581
發(fā)布評論請先 登錄
評論