首页
学习
活动
专区
工具
TVP
发布

Section 18-Halcon实战宝典之显示HALCON数据

Halcon的定位是一个类库,有着完整、快速实现的算子函数,提供了HDevelop作为快速开发的图形化(IDE)界面;但是它不是一个完整的最终应用软件,所以没有用户界面,也不提供显示的数据。

下面从实例来说明显事图像、区域、XLD和文本的主要特征。功能:它是一个小的调用进程处理四种不同的数据类型的主程序。在HDevelop下编写实现特定显示操作符,它与其他如C++、C#或Visual Basic的语言接口通信的方式实现。

主要的步骤包括五个步骤:open_window、display_image、disp_regions、

disp_xld和disp_text。要在单独步骤的程序中选择,可以在编程窗口中使用组合框Procedures。下面,解释每个步骤被选择的部分。

read_image (Image, 'fabrik')

dev_open_window (0, 0, 512, 300, 'black', WindowHandle)

disp_image (Image, WindowHandle)

regiongrowing (Image, Regions, 1, 1, 3, 100)

disp_region (Regions, WindowHandle)

edges_sub_pix (Image, Edges, 'lanser2', 0.5, 10, 30)

disp_xld(Edges, WindowHandle)

disp_text_button(WindowHandle, 'Text', 'window', 200, 200, 'black','gray')

dev_open_window是打开与图像相同尺寸的图形窗口的支柱步骤。它通过调用get_image_pointer1存取图像尺寸来实现。在打开新的窗口前,现有的窗口被关闭。要因此适应坐标系,调用dev_set_part。最后,HDevelop自动显示每个结果的默认行为被切断。

get_image_pointer1(Image, _, _, Width, Height)

dev_close_window()

dev_open_window(0, 0, Width, Height, ’white’, WindowHandle)

dev_set_part (0,0, Height-1, Width-1)

dev_update_window(’off’)

然后,调用图像显示程序:disp_image。它用Image和WindowHandle作为输入参数。首先,窗口被激活,对HDevelop来说不需要再次激活,但是对于其他编程环境来说这很重要。现在,图像显示在图形窗口中。要改变查询表(LUT),调用dev_set_lut,这样在再次调用dev_display后,效果将变成可视的。

dev_set_window (WindowHandle)

dev_display (Image)

dev_set_lut (’temperature’)

dev_display (Image)

接着,使用一个叫做3D图形的显示图像的一部分。这里,灰度值被作为高度信息。对于这种模式,LUT被使用。

gen_rectangle1(Rectangle, 358, 298, 387, 329)

dev_set_draw('margin')

dev_set_color('yellow')

dev_display(Rectangle)

dev_set_part (358,298, 387, 329)

dev_set_lut('twenty_four')

dev_set_paint(['3D-plot_hidden',7,1,110,160,600,0,0])

dev_display(Image)

它首先显示背景图片,然后为区域设定显示参数。dev_set_draw指明只有区域边界被可视化。dev_set_colored激活了多彩色模式,在该模式下每个区域用不同的颜色显示。替代简单地指出区域的原始形状,HALCON能让你用dev_set_shape改变形状。如下,选择显示等价的椭圆。

read_image (Image, 'fabrik')

dev_display (Image)

dev_set_draw ('margin')

dev_set_colored (6)

dev_display (Regions)

dev_display (Image)

dev_set_shape ('ellipse')

dev_display (Regions)

程序包括一个while循环,当按下鼠标右键时程序结束。鼠标操作get_mbutton等待到用户用鼠标在图形窗口点击,然后返回坐标和按钮值。通过使用select_region_point,该坐标被用来选择包含该点的区域。对于该区域,用area_center来计算大小和重心。首先,文本光标用set_tposition放置,然后使用write_string显示值。

Button := 0

while (Button # 4)

get_mbutton (WindowHandle, Row,Column, Button)

select_region_point (Regions,DestRegions, Row, Column)

area_center (DestRegions, Area,RowCenter, ColumnCenter)

if (|Area| > 0)

set_tposition (WindowHandle, Row,Column)

dev_set_color (‘yellow’)

write_string (WindowHandle, ‘(‘+RowCenter+’,’+ColumnCenter+’)= ‘+Area)

endif

endwhile

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180331G1AQP000?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券