在VS中調用Halcon中的分割之類函數後,直接傳回顯示時會報錯,因為是把傳回值當成L了Image變量直接指派給了圖像資料buffer,傳回的是被分割後的Regions,是以從Regions中擷取get_image_pointer1或get_image_pointer3時就會報錯,提示函數沒有灰階值。
是以需要将Regions連接配接起來生成一個大的區域,然後将區域進行相關操作轉化成Image,Halcon中有三個區域轉圖像算子:region_to_bin、region_to_label、region_to_mean.
-
region_to_bin
(Region,BinImage,ForegroundGray,BackgroundGray,Width,Height)
它将一個區域轉化成一個二進制位元組圖像。給區域内的所有像素賦給前景灰階值,如果輸入區域大于生成的圖像,則會在圖像邊界處截斷;
-
region_to_label
(Region,ImageLabel,Type,Width,Height)
它将區域轉化為一個标簽圖像,通過索引值:第一個區域賦予灰階值1,第二個區域賦予灰階值2,依此類推……這裡僅僅使用正的灰階值,直到256。區域大于生成圖像則會被适當地截斷。如果區域重疊,則較高值的圖像會被輸出。如果想重疊,可以調用expand_region進行處理。Type=‘int2’、‘int4’、‘byte’
-
region_to_mean
(Regions,Image,ImageMean)
用它們的均值來填充圖像區域,傳回Image。
region_to_bin
region_to_bin——将将區域轉換為二進制位元組圖像。
函數原型:region_to_bin(Region : BinImage : ForegroundGray, BackgroundGray, Width, Height : )
功能:region_to_bin将在Region中給定的輸入區域轉換為“位元組”圖像,并将ForegroundGray的灰階值配置設定給該區域中的所有像素。 如果輸入區域大于生成的圖像,則會在圖像邊框處裁剪。 背景灰階值設定為BackgroundGray。
參數清單
Region (input_object) :要轉換的區域。
BinImage (output_object) :包含轉換區域的尺寸Width*Height的結果圖像。
ForegroundGray :區域内的灰階值。
Default value: 255
Suggested values: 0, 1, 50, 100, 128, 150, 200, 254, 255
Typical range of values: 0 ≤ ForegroundGray ≤ 255 (lin)
Recommended increment: 1
BackgroundGray (input_control) ——背景灰階值
Default value: 0
Suggested values: 0, 1, 50, 100, 128, 150, 200, 254, 255
Typical range of values: 0 ≤ BackgroundGray ≤ 255 (lin)
Recommended increment: 1
Width (input_control) ——要生成的圖像的寬度。
Default value: 512
Suggested values: 256, 512, 1024
Typical range of values: 1 ≤ Width ≤ 1024 (lin)
Minimum increment: 1
Recommended increment: 16
Restriction: Width >= 1
Height (input_control)——要生成的圖像的高度。
Default value: 512
Suggested values: 256, 512, 1024
Typical range of values: 1 ≤ Height ≤ 1024 (lin)
Minimum increment: 1
Recommended increment: 16
Restriction: Height >= 1
region_to_label
region_to_label -——将區域轉換為标簽圖像。
原型:
region_to_label
(Region : ImageLabel : Type, Width, Height : )
功能:region_to_label根據它們的索引(1…n)将輸入區域轉換成标簽圖像,即,第一區域被繪成灰階值1,第二區域被繪成灰階值2等。僅使用正灰階值。 對于’byte’圖像,索引以取256的模輸入。
超出生成圖像的區域被适當地剪切。 如果區域重疊,則輸入索引較高圖像的區域(即,它們按照它們被包含在輸入區域中的順序被繪制)。 如果需要,可以通過調用expand_region使區域不重疊。
将背景(即未被任何區域覆寫的區域)設定為0.這可以用于測試哪個圖像範圍不存在區域。
參數清單
Region (input_object) :要轉換的區域。
ImageLabel (output_object) :包含轉換區域的尺寸Width*Height的結果圖像。
Type (input_control) :圖像像素類型。
Default value: ‘int2’
List of values: ‘byte’, ‘int2’, ‘int4’, ‘int8’
Width (input_control) :要生成的圖像的寬度。
Default value: 512
Suggested values: 64, 128, 256, 512, 1024
Typical range of values: 1 ≤ Width ≤ 1024 (lin)
Minimum increment: 1
Recommended increment: 16
Restriction: Width >= 1
Height (input_control) :要生成的圖像的高度。
Default value: 512
Suggested values: 64, 128, 256, 512, 1024
Typical range of values: 1 ≤ Height ≤ 1024 (lin)
Minimum increment: 1
Recommended increment: 16
Restriction: Height >= 1
region_to_mean
region_to_mean ——用平均灰階值繪制區域。
函數原型:
region_to_mean
(Regions, Image : ImageMean : : )
功能: region_to_mean根據圖像Image傳回一個圖像,其中Regions的區域被繪制為其平均灰階值。 該算子主要是為了将分割結果可視化。
參數清單
Regions (input_object) :輸入區域。
Image (input_object):原始的灰階值圖像。
ImageMean (output_object) :結果圖像與繪制區域。
示例
read_image(Image,'fabrik')
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
regiongrowing(Image,Regions,3,3,6,100)
region_to_mean(Regions,Image,Disp)
disp_image (Disp, 200000)
disp_image(Disp,WindowHandle)
set_draw(WindowHandle,'margin')
set_color(WindowHandle,'black')
disp_region(Regions,WindowHandle)
運作結果如下所示: