Halcon一日一練:讀取檔案目錄影象的三種方法
第一種方法:
讀了一個單一影象:
read_image(Image,'fabrik')
這種方式可以快速的讀取軟體自身攜帶的庫影象檔案,系統設定了庫影象映像檔案的快速讀取方式,我們也可以通過絕對地址的方式來讀取指定的目錄檔案:
read_image(Image1,'E:/Halcon一日一練/參考資料/images/圖片1.jpg')
影象設定的映像檔案目錄可以進行關閉,set_system函式可以對映像檔案目錄進行關閉,關閉之後必須讀取影象的絕對地址,否則,系統將會報錯,
set_system('image_dir','false')//關閉影象映像檔案
read_image(Image,'fabrik')//此時系統會報錯
在關閉影象檔案目錄的情況下,再讀取影象將會出現異常,此時我們需要重新設定預設讀取檔案的目錄:
set_system('image_dir','C:\\Program Files\\MVTec\\HALCON-12.0\\images')
read_image(Image,'fabrik')
如果想要讀取自身設定的影象目錄,則是如下方式:
set_system('image_dir','E:\\Halcon一日一練\\參考資料\\images')
read_image(Image,'圖片1')
操作完成後一定要將系統設定回來,並確認目錄定義符一定是上斜線
set_system('image_dir','C:\\Program Files\\MVTec\\HALCON-12.0\\images')
set_system('image_dir,'true')
第2種方法:
如果要讀取一組影象,則需要對影象檔案的儲存名稱有一定的規則要求,一般按以下格式設定:‘name_number.imageform'
首先儲存為影象的名稱,下劃線後面追加影象數字序列,這種方式有利於影象的迴圈讀取,看看下面的語句:
for j:= 1 to 9 by 1
read_image(Image,'fonts/arial_a'+J+'.png')//讀取影象
dev_display(Image)//顯示影象
stop()//暫停
endfor
我們將C:\Program Files\MVTec\Halcon-12.0\images\fonts目錄下的9個影象檔案依次讀取並且顯示出來,中間的+號代表了字元間的合併。
第三種方法:
還有一種更好的方法,可以依次讀取目錄中的所有檔案,這種採用虛擬裝置讀取檔案內容的方式,可以直接讀取檔案中所有的影象,這種虛擬裝置的影象讀取方式,讀取外部裝置影象的方式非常接近,只不過獲取影象的裝置設定為檔案方式,操作的方法和外部裝置類似。
例程如下:
tuple_enviroment('HALCONROOT',RootDir)//檔案目錄
DirName:=RootDir+'\images'
*開啟檔案裝置
open_framegraber('File',-1,-1,-1,-1,'default',-,'default',-1,'default',DirName,'default',-1,-1,AcqHandle)
while(1)
get_framegrabber_param(AcqHandle,'device',CurrentFileName)//設定影象裝置對應的檔案目錄
grab_image(Image,AcqHandle)//讀取檔案
endwhile
close_framegrable(AcqHandle)//關閉裝置