Halcon region区域提取及区域转图像

在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.

  1. region_to_bin(Region,BinImage,ForegroundGray,BackgroundGray,Width,Height)
    它将一个区域转化成一个二进制字节图像。给区域内的所有像素赋给前景灰度值,如果输入区域大于生成的图像,则会在图像边界处截断;
  2. region_to_label(Region,ImageLabel,Type,Width,Height)
    它将区域转化为一个标签图像,通过索引值:第一个区域赋予灰度值1,第二个区域赋予灰度值2,依此类推……这里仅仅使用正的灰度值,直到256。区域大于生成图像则会被适当地截断。如果区域重叠,则较高值的图像会被输出。如果想重叠,可以调用expand_region进行处理。Type=‘int2’、‘int4’、‘byte’
  3. 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)
 

运行结果如下所示:
在这里插入图片描述

  • 5
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

&Mr.Gong

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值