- 機(jī)器視覺(jué)技術(shù)基礎(chǔ)
- 肖蘇華主編
- 2281字
- 2021-12-30 20:36:15
3.3 軟件圖像采集
熟悉了HALCON界面之后,接下來(lái)就要考慮怎么樣進(jìn)行圖像采集。圖像采集是圖像處理的基礎(chǔ),采集圖像的速度和質(zhì)量會(huì)直接影響后續(xù)圖像處理的效率。本章主要介紹如何獲取輸入圖像。
3.3.1 獲取非實(shí)時(shí)圖像
當(dāng)不能在檢測(cè)現(xiàn)場(chǎng)進(jìn)行實(shí)時(shí)調(diào)試時(shí),我們可以選擇拍攝好的一些圖像或者視頻作為測(cè)試素材,進(jìn)行算法測(cè)試與處理。
①利用read_image算子讀取圖像,程序如下:
read_image (Image, 'D:/patras.png')
以上程序可讀取單張指定位置圖像,若要讀取整個(gè)文件夾的圖像,則可以利用for循環(huán)來(lái)實(shí)現(xiàn),代碼如下:
*列出指定路徑下的文件 list_files ('D:/picture', ['files','follow_links'], ImageFiles) *選擇符合條件的文件 tuple_regexp_select(ImageFiles,['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm |pbm|xwd|ima|hobj)$','ignore_case'], ImageFiles) *循環(huán)讀取文件夾中的文件 for Index := 0 to |ImageFiles| - 1 by 1 read_image (Image, ImageFiles[Index]) endfor
②利用快捷鍵。
按住Ctrl+R打開(kāi)讀取圖像對(duì)話窗口,在文件名稱一欄中選擇圖像所在的文件路徑,在語(yǔ)句插入位置點(diǎn)擊確定,即可獲得圖像,如圖3.18所示。

圖3.18 使用快捷鍵獲取圖像
③利用采集助手批量讀取文件夾下所有圖像。
利用采集助手批量讀取文件夾下所有圖像的步驟為:點(diǎn)擊菜單欄中的“助手”→“打開(kāi)新的Image Acquisition”,點(diǎn)擊“資源”選項(xiàng)卡下的“選擇路徑”,如圖3.19所示。點(diǎn)擊“代碼生成”選項(xiàng)卡下的“插入代碼”,如圖3.20所示。

圖3.19 文件選擇路徑

圖3.20 插入代碼
④讀取視頻文件。
讀取視頻文件與讀取圖像文件類似,以HALCON圖像采集助手為例:
點(diǎn)擊菜單欄中的“助手”→“打開(kāi)新的Image Acquisition”,點(diǎn)擊“資源”選項(xiàng)卡下的“圖像獲取接口”,選項(xiàng)區(qū)域選擇“DirectFile”,如圖3.19所示,然后選擇“連接”選項(xiàng)卡,在其中設(shè)置讀取視頻的參數(shù),在“媒體文件”中選擇視頻所在的路徑,如圖3.21所示,即可實(shí)現(xiàn)視頻的輸入。

圖3.21 選擇媒體文件
實(shí)現(xiàn)代碼參考如下:
*開(kāi)啟圖像采集接口 open_framegrabber ('DirectFile', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'D:/video.avi', 'default', -1, -1, AcqHandle) *開(kāi)始異步采集 grab_image_start (AcqHandle, -1) while (true) *獲取采集的像 grab_image_async (Image, AcqHandle, -1) endwhile close_framegrabber (AcqHandle)
HALCON支持的視頻格式并不多,文件中可選的只有“.avi”格式的視頻,而且并非所有“.avi”格式的文件都能提取。因此建議使用圖像或者圖像序列的方式來(lái)代替非實(shí)時(shí)視頻輸入。
3.3.2 獲取實(shí)時(shí)圖像
實(shí)時(shí)圖像采集是利用現(xiàn)代化技術(shù)進(jìn)行實(shí)時(shí)圖像信息獲取的手段,在現(xiàn)代多媒體技術(shù)中占有重要的地位。在日常生活中、生物醫(yī)學(xué)領(lǐng)域、航空航天等領(lǐng)域都有著廣泛的應(yīng)用。圖像采集的速度、質(zhì)量直接影響到產(chǎn)品的整體效果。在HALCON中,獲取實(shí)時(shí)圖像主要有兩種方式:①通過(guò)HALCON自帶的采集接口獲取;②通過(guò)相機(jī)配套的SDK獲取。本節(jié)主要介紹第一種方式。
HALCON的采集功能非常強(qiáng)大,它支持的相機(jī)種類非常豐富,為市面上常見(jiàn)的多種機(jī)型提供了統(tǒng)一的公用接口。如果系統(tǒng)選擇的相機(jī)支持HALCON,就可以直接使用HALCON自帶的接口庫(kù)實(shí)現(xiàn)連接。
HALCON實(shí)時(shí)圖像采集可分為三步,如圖3.22所示。

圖3.22 HALCON實(shí)時(shí)采集圖像流程
(1)連接相機(jī)
在HALCON中,調(diào)用open_framegrabber算子可以連接相機(jī),同時(shí)設(shè)置一些基本的采集參數(shù),如選擇相機(jī)類型和指定采集設(shè)備。也可以設(shè)置和圖像相關(guān)的參數(shù),介紹如下。
①HorizontalResolution:圖像采集接口的水平相對(duì)分辨率。如果是1,表示采集的圖寬度和原圖一樣大;如果是2,表示采集圖的寬度為原圖的兩倍。默認(rèn)為1。
②VerticalResolution:圖像采集接口的垂直相對(duì)分辨率。同樣,默認(rèn)為1,表示采集的圖寬度和原圖一樣大。
③ImageWidth:圖像的寬,即每行的像素?cái)?shù)。默認(rèn)為0,表示原始圖的寬度。
④ImageHeight:圖像的高,即每列的像素?cái)?shù)。默認(rèn)為0,表示原始圖的高度。
⑤StartRow、StartColumn:采集圖像在原始圖像上的起始坐標(biāo),均默認(rèn)為0。
⑥Field:相機(jī)的類型,默認(rèn)為default。
⑦BitsPerChannel:像素的位數(shù),默認(rèn)為-1。
⑧ColorSpace:顏色空間,默認(rèn)為default,也可以選擇Gray或RGB,分別表示灰度和彩色。
⑨Generic:通用參數(shù)與設(shè)備細(xì)節(jié)部分的具體意義,默認(rèn)為-1。
⑩CameraType:相機(jī)的類型,默認(rèn)為default,也可以根據(jù)相機(jī)的類型選擇ntsc、pal或auto。
?Device:HALCON所連接的采集設(shè)備的編號(hào),默認(rèn)為default,如果不確定相機(jī)的編號(hào),可使用info_framegrabber算子進(jìn)行查詢。
?Port:圖像獲取識(shí)別連接的端口,默認(rèn)為-1。
這個(gè)算子執(zhí)行完后會(huì)返回一個(gè)圖像采集的連接句柄AcqHandle,該句柄就如同HALCON和硬件進(jìn)行交互的一個(gè)接口。使用該句柄可以實(shí)現(xiàn)圖像捕獲、設(shè)置采集參數(shù)等。
(2)設(shè)置采集參數(shù)
open_framegrabber算子是針對(duì)大部分相機(jī)的公用接口,但相機(jī)的種類繁多,功能各異,因此公用接口中只包含了通用的幾種簡(jiǎn)單操作的參數(shù)。如果想要充分地利用相機(jī)的全部功能,則可以使用set_framegrabber_param設(shè)置其他的特殊參數(shù)。
具體的參數(shù)種類或值的含義可參考HALCON的算子文檔,如果想要查看HALCON具體支持哪些可修改的參數(shù),可以使用info_framegrabber算子。例如:
info_framegrabber('GigEVision','parameters',ParametersInfo,ParametersValue)
特殊參數(shù)將在“變量監(jiān)視”窗口列出,如圖3.23所示。

圖3.23 特殊參數(shù)列表
如要修改其中的某項(xiàng)參數(shù),使用set_framegrabber_param算子。例如:
set_framegrabber_param (::AcqHandle, Param,Value: )
其中AcqHandle為圖像采集的句柄,Param為參數(shù)名稱,Value為要修改的值。選項(xiàng)可參考如下:
AcqHandle:(輸入?yún)?shù))圖像采集設(shè)備句柄。
Param:(輸入?yún)?shù))參數(shù)名稱,可以設(shè)置'color_space'(顏色空間), 'continuous_grabbing'(連續(xù)獲取圖像), 'external_trigger'(外部獲取觸發(fā)器)等。
Value:(輸入?yún)?shù))要修改的參數(shù)值。
值得注意的是,如果某個(gè)參數(shù)在open_framegrabber中設(shè)定過(guò),那么該參數(shù)將不可在相機(jī)工作過(guò)程中被修改。如果要查詢某一個(gè)參數(shù)的值,可以用get_framegrabber_param算子。例如:
get_framegrabber_param (AcqHandle, 'name', Value)
(3)采集圖像
與相機(jī)建立聯(lián)系后,可以調(diào)用grab_image或grab_image_async算子進(jìn)行圖像采集。
①grab_image用于相機(jī)的同步采集,具體算子如下:
grab_image( : Image : AcqHandle : )
其工作流程是先獲取圖像,然后在圖像轉(zhuǎn)換等處理流程完成之后再獲取下一幀圖像,圖像的獲取和處理是兩個(gè)順序執(zhí)行的環(huán)節(jié)。因此,下一幀圖像的獲取要等待上一幀圖像的處理完成才開(kāi)始,這樣采集圖像的速率會(huì)受處理速度的影響。
②grab_image_async用于相機(jī)的異步采集,具體算子如下:
grab_image_async( : Image : AcqHandle, MaxDelay : )
其中MaxDelay表示異步采集時(shí)可以允許的最大延時(shí),異步采集不需要等到上一幀圖片處理完成再開(kāi)始捕獲下一幀,圖像的獲取和處理是兩個(gè)獨(dú)立的環(huán)節(jié)。
(4)關(guān)閉圖像采集接口
采集完圖像后可用close_framegrabber關(guān)閉圖像采集設(shè)備。
例3.1
采集圖像實(shí)例。
*打開(kāi)海康威視相機(jī) open_framegrabber ('GigEVision', 0, 0, 0, 0, 0, 0, 'default', 8, 'gray', -1, 'false', 'default', 'c42f90f25dbe_Hikvision_MVCA05010GM', 0, -1, AcqHandle) *準(zhǔn)備采集圖像 grab_image_start (AcqHandle, -1) *循環(huán)采集圖像 while (true) grab_image_async (Image, AcqHandle, -1) Endwhile *關(guān)閉相機(jī) close_framegrabber (AcqHandle)
- 法國(guó)時(shí)裝紙樣設(shè)計(jì) 平面制板應(yīng)用編
- 初級(jí)會(huì)計(jì)理論與實(shí)務(wù)
- 周平《新編日語(yǔ)2(修訂本)》學(xué)習(xí)指南【課文重點(diǎn)+詞匯剖析+語(yǔ)法精解+全文翻譯+練習(xí)答案】
- 消費(fèi)者行為學(xué)(第2版)
- 配色與打樣
- 設(shè)計(jì)色彩(微課版)
- 工程地質(zhì)
- 戲劇學(xué)
- 國(guó)際商務(wù)單證實(shí)務(wù)(第七版)
- 膠體與表面化學(xué)(第四版)
- 新文科背景下酒店管理專業(yè)人才培養(yǎng)高質(zhì)量發(fā)展研究
- 南京大學(xué)外國(guó)語(yǔ)學(xué)院211翻譯碩士英語(yǔ)[專業(yè)碩士]歷年考研真題及詳解
- 南京大學(xué)921管理學(xué)原理歷年考研真題及詳解
- 芯片設(shè)計(jì):CMOS模擬集成電路版圖設(shè)計(jì)與驗(yàn)證:基于Cadence IC 617
- 高校法學(xué)專業(yè)核心課程配套測(cè)試:中國(guó)法律史(第九版)