在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)region_to_mean
(Regions,Image,ImageMean)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)