一、圖像獲取與采集
1、本地圖片讀取
① 單張讀取
直接傳入圖片路徑即可,可以用絕對路徑,也可以用相對路徑:
read_image (Image, 'C:/Users/Administrator/Desktop/1.png')
② 編號連續的圖片讀取(000、001、002……)
* 分別讀取003.jpg、004.jpg、005.jpg、006.jpg
for i := 3 to 6 by 1
read_image (Image, 'C:/Users/Administrator/Desktop/pic/' + i$'.3' + '.jpg')
endfor
③ 讀取文件夾(及子文件夾)下全部圖片
list_files ('D:/photo', ['files','follow_links'], ImageFiles)
tuple_regexp_select (ImageFiles, ['\\.(tif|tiff|gif|bmp|jpg|jpeg|jp2|png|pcx|pgm|ppm|pbm|xwd|ima)$','ignore_case'], ImageFiles)
for Index := 0 to |ImageFiles| - 1 by 1
read_image (Image, ImageFiles[Index])
* Image Acquisition 01: Do something
endfor
算子list_files中可以有多個參數,例如:
'directories':讀取文件夾
'recursive':遞歸,讀取子文件夾里面的文件
'max_depth 3':支持3級文件目錄深度的文件檢索
'max_files 1000':最大文件數目不超過1000個
……
2、相機采集圖像(以筆記本攝像頭為例)
執行“助手”——“打開新的Image Acquisition”:
如果沒連其他的相機,那么點擊“自動檢測接口”則會檢測出“DirectShow”,此時點擊“實時”圖標就可以用筆記本攝像頭實時采集圖像了:
然后點“插入代碼”就可以看到采集圖像的Halcon代碼了:
二、常見圖像格式介紹
jpg——(有損壓縮)
png——(無損壓縮)
bmp——(無損、通常不壓縮)
其他還有gif、tiff、ico等格式的圖片,但是一般視覺項目中只會用到jpg、png、bmp這三種格式。一般相機采圖輸出的就是bmp格式的圖片,這種圖片的主要缺點是文件太大,占磁盤。png圖片是無損壓縮圖片,具有和bmp相同的保真度,png和bmp可以互相無損轉換,同一張圖,png格式只有bmp格式體積的1/3或者更少,jpg通常體積更小,但是由於有畫質損失,一般很少使用。
總之,不同格式的圖片在文件大小以及保真度上有明顯差異。
bmp格式圖片文件大小的計算:
以這張500W黑白相機(2448 * 2048)拍攝的圖片為例。黑白相機是8位黑白圖像,一個像素占據1 Byte的空間。
2048 * 2448 /1024 = 4896 KB,可以看出跟上圖中的4898KB是即為接近的,其差異忽略不計,因此一般這么算就行。
如果是彩色相機,一般輸出24位圖像,圖像大小擴大為3倍。
或者記住一句口訣:500萬相機輸出的黑白圖像一般是5MB,1000萬相機輸出的黑白圖像一般是10MB;如果是彩色圖像,則大小乘以3。
三、Region介紹
1、簡介
Region可以理解為符合某些性質像素的集合,Region的形狀可以是任意的,例如圓、橢圓、矩形、或者其他不規則圖形,甚至單獨的一個點都可以成為一個Region。
2、最常見相關算子
獲取Region的面積和中心點坐標:
area_center(Regions : : : Area, Row, Column)
根據特征篩選Region,這些特征可以是面積、寬、高、最小內接圓、圓度、矩形度等參數:
select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
通常用於在一堆Region中選擇面積最大的那個:
select_shape_std(Regions : SelectedRegions : Shape, Percent : )
3、Region的聯合操作
上面四種算子操作分別是:並集、交集、差集、補集。
4、Region轉換操作
shape_trans(Region : RegionTrans : Type : )
5、其他常見region算子(幫助文檔檢索“region”獲得更多相關算子信息)
draw_region
move_region
paint_region
read_region
write_region
region_features
sort_region
zoom_region
……