open_framegrabber (AcqName, 1, 1, 0, 0, 0, 0, ‘default’, -1, ‘default’, -1, ‘false’, CameraType, myBoard, -1, -1, AcqHandle)
使用操作符 open_framegrabber 打開與圖像采集設備的連接時,主要參數是相應 HALCON 采集接口的名稱。因此,您將獲得一個所謂的句柄 (AcqHandle),通過它您可以訪問圖像采集設備,例如,在調用操作者grab_image 時。
圖 2.1:a) 獲取的圖像;b) 處理過的圖像(自動分割)
在示例中,大多數其他參數使用默認值(‘default’ 或 -1)
第 2 步:抓取圖像
grab_image (Image, AcqHandle)
成功連接到您的圖像采集設備后,您可以通過調用帶有相應句柄 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
在示例中,然后使用運算符 auto_threshold 自動分割抓取的圖像(見圖 2.1)。這是在循環(huán)中完成的,可以通過用鼠標左鍵單擊窗口來退出。
3、連接到您的圖像采集設備
在本節(jié)中,我們將展示如何連接到不同配置的圖像采集卡和相機,從一個相機連接到一個圖像采集卡的簡單情況到更復雜的情況,例如多個同步相機連接到 一塊或多塊板。
3.1 打開指定配置的連接
用操作符 open_framegrabber,您可以打開與圖像采集設備的連接。這種連接由四個參數描述(見圖 3.1):首先,您選擇一個帶有參數 Name 的采集接口。參數 Device 指定實際的板卡或相機;根據采集接口,該參數可以包含描述板的字符串或簡單的數字(以字符串的形式?。?。通常,相機可以連接到不同端口的圖像采集卡,其數量可以通過參數 Port(在極少數情況下為 LineIn)來選擇。參數 CameraType 描述了連接的攝像頭:對于模擬攝像頭,該參數通常指定使用的信號范數,例如,‘ntsc’。對于數碼相機,此參數通常指定相機型號;更復雜的采集接口使用此參數來選擇相機配置文件。
因此,open_framegrabber 在參數 AcqHandle 中返回打開連接的句柄。請注意,如果您使用 HALCON 的 COM 或 C++ 接口并通過相應的類調用操作符,例如 C++ 中的 HFramegrabber,則不會返回句柄,因為類的實例本身充當您的句柄。
使用 HDevelop 的圖像采集助手,您可以輕松連接到您的圖像采集設備并選擇合適的參數
3.2 連接多個板卡和攝像頭
大多數 HALCON 采集接口允許使用多個圖像采集卡和相機。但是,連接攝像機和電路板以及從 HALCON 內部訪問這些配置的方法不止一種。下面,我們描述不同的配置;請檢查您的圖像采集設備的 HALCON 接口的在線文檔(請參閱 %HALCONROOT%dochtmlmanuals、Windows 開始菜單中的 HALCON 文件夾,或 http://www.halcon.com/image-acquisition) 它支持哪些配置。
3.2.1 單攝像頭
圖 3.2a 顯示了最簡單的配置:單個攝像頭連接到單個板上,可通過單個手柄訪問。一些圖像采集卡,尤其是數字圖像采集卡,只支持這種配置;如以下部分所述,您仍然可以通過將每個攝像頭連接到單獨的電路板來使用具有此類圖像采集卡的多個攝像頭。請注意,此配置是通過 USB 2.0、IEEE 1394 或 GigE 連接的數碼相機的典型配置。
3.2.2 Multiple Boards
圖 3.2b 顯示了具有多個攝像頭的配置,每個攝像頭都連接到單獨的電路板。在這種情況下,您在 HDevelop 示例程序 solution_guideimage_acquisitionmultiple_boards.hdev 中為每個連接調用一次操作符 open_framegrabber。
圖 3.2:a) 單板單攝像頭;b) 多塊板,每塊帶一個攝像頭;c) 帶有一個或多個攝像頭的多塊板;d) 單板多攝像頭和端口切換;e) 單板多攝像頭同時抓??;f) 使用多個電路板和相機同時抓取
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)
在此示例中,兩個調用僅在參數 Device(“0”和“1”)的值上有所不同;當然,您也可以為其他參數使用不同的值,甚至可以連接到不同的圖像采集接口。
要從兩個攝像頭抓取圖像,您只需使用兩次調用 open_framegrabber 返回的兩個句柄調用一次操作符grab_image:
grab_image (Image0, AcqHandle0)
grab_image (Image1, AcqHandle1)
3.2.3 每塊板有多個手柄
許多圖像采集卡提供多個輸入端口,因此允許將多個攝像頭連接到板上。根據 HALCON 采集接口的不同,可以通過本節(jié)和以下各節(jié)中描述的不同方式訪問此配置。
連接相機的標準HALCON方法如圖3.2c所示:每個連接都有自己的句柄,即open_framegrabber為每個相機調用一次,參數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 端口交換
一些圖像采集接口不通過多個手柄訪問相機,而是通過動態(tài)切換輸入端口(見圖 3.2d)。因此,open_framegrabber 只被調用一次,就像在 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)
在抓取圖像之間,您使用運算符 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)
注意,端口切換僅適用于兼容(類似)相機,因為 open_framegrabber 僅被調用一次,即所有相機使用相同的參數值集。相比之下,當如上所述使用多個手柄時,您可以為各個相機指定不同的參數值(有一些特定于板的限制)。
3.2.5 同時抓?。▋H針對特定接口)
在上述配置中,圖像是通過多次調用操作者grab_image從單個相機中抓取的。相比之下,一些采集接口允許通過一次調用grab_image從多個攝像頭抓取圖像,然后返回多通道圖像(參見圖3.2e;第51頁的附錄A.1包含有關多通道圖像的更多信息) 。 這種模式稱為同時抓取(或并行抓?。慌c端口切換一樣,它僅適用于兼容(類似)的相機。例如,您可以使用此模式從立體相機系統(tǒng)中抓取同步圖像。請注意,同時抓取僅適用于極少數圖像采集接口。
在這種模式下,open_framegrabber 只被調用一次,可以在 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)
您可以使用運算符 count_channels 檢查返回圖像(通道)的數量
grab_image (SimulImages, AcqHandle)
count_channels (SimulImages, num_channels)
并根據圖像數量提取單個圖像,例如使用分解2、分解3等:
if (num_channels == 2)
decompose2 (SimulImages, Image0, Image1)
或者,您可以使用 image_to_channels 將多通道圖像轉換為圖像數組,然后通過 select_obj 選擇單個圖像。
3.3 請求有關圖像采集接口的信息
如前所述,各個 HALCON 采集接口在 HTML 頁面上有詳細描述,這些頁面可以在目錄 %HALCONROOT%dochtmlmanuals 或 Windows 開始菜單的 HALCON 文件夾中找到(如果您安裝了文檔)。另一種訪問圖像采集接口信息的方法是使用操作符 info_framegrabber。
在HDevelop示例程序solution_guideimage_acquisitioninfo_framegrabber.hdev(為HALCON 1394IIDC接口預配置,請根據自己的圖像采集設備調整接口名稱)多次調用該算子查詢接口版本號、可用設備 ,端口號,相機類型,以及open_framegrabber所有參數的默認值;結果,即 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 實際連接到圖像采集設備之前,可以調用操作符 info_framegrabber。唯一的條件是已經安裝了HALCON采集接口和設備驅動和SDK。
原文標題:3、連接到您的圖像采集設備
編輯:黃飛
-
攝像機
+關注
關注
3文章
1603瀏覽量
60076 -
攝像頭
+關注
關注
60文章
4845瀏覽量
95754
原文標題:3、連接到您的圖像采集設備
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論