Halcon图像处理之多图像平铺显示

引言

使用MFC联合Halcon,将HDevelop中的演示结果用MFC中对话框的形式显示


一、结果

1.1 Halcon演示结果

在这里插入图片描述


二、Halcon代码

read_image (Image, 'claudia')                   //读取图像
concat_obj (Image, Image, Images)               //连接两个标志性的对象元组
tile_images (Images, TiledImage1, 1, 'vertical')  //将多个图像对象平铺成一个大图像
tile_images (Images, TiledImage2, 2, 'horizontal')
scale_image (Image, ImageInverted, -1, 256)         //缩放图像的灰度值。
concat_obj (ImageInverted, ImageInverted, ImagesInverted) //连接两个标志性的对象元组
concat_obj (Images, ImagesInverted, Images4)
tile_images (Images4, TiledImage3, 2, 'horizontal')
tile_images (Images4, TiledImage4, 2, 'vertical')
mirror_image (Image, ImageMirror, 'row')                  //镜像图像
concat_obj (Images4, ImageMirror, Images5)
tile_images (Images5, TiledImage5, 3, 'horizontal')
tile_images (Images5, TiledImage6, 3, 'vertical')
mirror_image (Image, ImageMirror2, 'column')
concat_obj (ImageMirror2, ImageMirror2, ImagesMirror)
concat_obj (Images5, ImagesMirror, Images7)
tile_images (Images7, TiledImage7, 5, 'horizontal')
tile_images (Images7, TiledImage8, 5, 'vertical')

2.1 关键函数分析

2.1.1 concat_obj (Operator)

concat_obj — 连接两个标志性对象元组

concat_obj(Objects1, Objects2 : ObjectsConcat : : )
//Objects1 (input_object)   	--Object tuple 1.
//Objects2 (input_object)   	--Object tuple 2.
//ObjectsConcat (output_object) --Concatenated objects. 

2.1.1.1 描述

concat_obj 将标志性对象 Objects1 和 Objects2 的两个元组连接成一个新的标志性对象 ObjectsConcat 元组。因此,这个元组包含两个输入元组的所有标志性对象:

ObjectsConcat = [Objects1,Objects2]

在 ObjectsConcat 中,先存储 Objects1 的对象,然后是 Objects2 的对象,即保留对象的顺序。请注意,ObjectsConcat 中仅存储对相应图像和区域的引用,即不会分配新内存。此外,这意味着对输入图像的修改,例如,使用 set_grayval、overpaint_gray 或 overpaint_region 直接影响输出元组 ObjectsConcat 的图像,反之亦然。

concat_obj 不应与 union1 或 union2 混淆,它们合并了区域,即修改了对象的数量。

concat_obj 可用于将不同图像对象类型(例如,图像和 XLD 轮廓)的对象连接成单个对象。仅当需要在单个对象变量中进行累加时才建议这样做,例如,图像处理序列的结果。需要注意的是,能够处理这种混合类型对象元组的运算符只有 concat_obj、copy_obj、select_obj 和 disp_obj。

2.1.1 tile_images (Operator)

tile_images — 将多个图像对象平铺成一个大图像。

tile_images(Images : TiledImage : NumColumns, TileOrder : )
//Images (input_object)     	--Input images.
//TiledImage (output_object)    --Tiled output image.
//NumColumns (input_control)    --用于输出图像的列数
	Default value: 1
	Suggested values: 1, 2, 3, 4, 5, 6, 7
	Restriction: NumColumns >= 1
//TileOrder (input_control)   	--输入图像在输出图像中的顺序。
	Default value: 'vertical'
	List of values: 'horizontal', 'vertical'

tile_images 将多个输入图像对象(必须包含相同数量的通道)平铺到一个大图像中。输入图像对象 Images 包含 Num 个图像,这些图像可能具有不同的大小。输出图像 TiledImage 包含与输入图像一样多的通道。在输出图像中,Num 输入图像已平铺到 NumColumns 列中。每个图块具有相同的大小,由所有输入图像的最大宽度和高度决定。如果输入图像小于图块大小,则将其复制到相应图块的中心。在 NumColumns 尚未确定的情况下(即,如果 NumColumns != 1 和 NumColumns != Num),参数 TileOrder 确定将图像复制到输出中的顺序。如果 TileOrder = ‘horizo​​ntal’ 图像将在水平方向复制,即图像的第二个图像将在第一个图像的右侧。如果 TileOrder = ‘vertical’ 图像将在垂直方向复制,即图像的第二个图像将在第一个图像下方。 TiledImage的domain是通过将Images的domains复制到输出图像中的对应位置得到的。如果 Num 不是 NumColumns 的倍数,则输出图像将在图像的右下角具有未定义的灰度值。输出域将反映这一点。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值