中国体育彩票官方网站app
返回首页 hi, 欢迎来到机器人在线 请登录/ 免费注册 订阅邮件
  • 【大恒】轻松学HALCON(七)——HDevelop图形窗口操作(下)

    发布时间:2019年11月05日

    二、通过代码打开HDevelop窗口


    1 dev系列函数


    在HDevelop?#24418;?#20204;会看到很多dev开?#36820;?#20989;数,这些函数?#35805;?#37117;会存在一个不带有dev前缀且名称相同、?#38382;?#30456;近的算子,这?#34903;?#31639;子的区别在于,前者作用范围仅限于HDevelop在导出为其他语言代码时将被忽略,后者则可以被成功导出为C、C++、CSharp等代码。


    2 打开窗口


    我们可以通过代码的方式创建窗口,具体函数如下。





    正如我们之前所说的dev_open_window会创建一个HDevelop的图形窗口,它拥有HDevelop图形窗口的所有功能,但该代码不会被导出。由open_window创建的窗口可以被导出,但关闭操作必须通过调用函数close_window (WindowHandle1)实现。


    3 激活窗口


    在HDevelop中dev函数只会对激活窗口起作用,因此在调用这些函数之前我们需要通过dev_set_window (WindowHandle)设置窗口为激活状态,然后再调用相应的dev函数进行设置或绘图。对于新建程序后自带的窗口,可以在脚本第一行添加dev_get_window (WindowHandle)语句,获取当前激活的窗口句柄。


    4 打开缓存窗口


    我们可以使用open_window创建一个缓冲窗口,具体代码如下

    open_window (0, 0, 256, 256, 0, ' buffer', '', WindowHandle1)

    此窗口不会被显示出来,但是却拥有可见窗口所有的显示存储功能,这其中也包括了窗口截图存储功能,如果你在导出程序中希望在不显示窗口的情况下存储一些处理过程,它将是不错的选择。


    5 窗口?#38382;?/p>


    创建好窗口后我们可以通过相应的函数改变窗口的尺寸和显示范围。

     修改窗口尺寸

    我们可以使用dev_set_window_extents设置激活窗口的尺寸,具体代码如下:



     修改显示区域

    默认情况下,当调用绘图函数时,显示的图像会以拉伸的方式填满整个窗口。我们?#37096;?#20197;使用dev_set_part函数,将原图的某个特定区域以拉伸的方式填充整个窗口。

    具体代码如下:



    ?示例:

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

    三 绘制HObject对象


    1 绘制对象到窗口


    我们可以使用dev_display (Image)或disp_obj (Image, WindowHandle)刷新?#25105;?#22270;形对象(图像、边缘、区域)到图形窗口上。


    2 设置绘制属性


    通过窗口右键?#35828;?#20462;改的数据绝大部分都可以使用代码实现,详见下表:



    四 绘制文字


    在HDevelop?#24418;?#20204;有3?#22336;?#24335;在窗口上绘制文字:


    1 write_string

    write_string需配合set_tposition或new_line函数可以在窗体?#25105;?#20301;置绘图。set_tposition可用于指定文?#21482;?#21046;位置,new_line可以根据字体高度自动计算并设置?#22336;?#19979;一行的绘制位置。字体颜色则可通过dev_set_color设置。

    示例:循环打印0到5数组元素的内容


    2 dev_disp_text


    dev_disp_text可以一次性绘制数组中的数据,并可为?#22336;?#28155;加文本框,数组各元素之间用换行的形式分割。通过函数?#38382;?#25105;们可以修改?#22336;?#39068;色、位置、文本框属性等。具体?#38382;?#22914;下:

    ? ? ? ? ??


     输出数组

    该?#38382;?#25903;持对?#22336;?#21644;数据混合类型的tuple数组进行绘制

     参考坐标系

    ‘window’ 绘制坐标基于窗体左上角

    ‘image’ ? ?绘制坐标基于图像左上角

     绘制位置X、Y

    该?#38382;?#29992;于设置?#22336;?#32472;?#39057;?#36215;始位置,除了填写固定数值,我们还可以,填写’left’,’top’,’center’等?#38382;?#23454;现文本框停靠效果。


    示例:

    HDevelop脚本代码:

    dev_clear_window ()

    dev_get_window (WinID)

    tup:=['center','150']

    dev_disp_text ('(top, left)', 'window', 'top', 'left', 'black', [], [])

    dev_disp_text ('(top, center)', 'window', 'top', 'center', 'black', [], [])

    dev_disp_text ('(top, right)', 'window', 'top', 'right', 'black', [], [])

    dev_disp_text ('(center, left)', 'window', 'center', 'left', 'black', [], [])

    dev_disp_text ('(center, center)', 'window', 'center', 'center', 'black', [], [])

    dev_disp_text ('(center, right)', 'window', 'center', 'right', 'black', [], [])

    dev_disp_text ('(bottom, left)', 'window', 'bottom', 'left', 'black', [], [])

    dev_disp_text ('(bottom, center)', 'window', 'bottom', 'center', 'black', [], [])

    dev_disp_text ('(bottom, right)', 'window', 'bottom', 'right', 'black', [], [])

    dev_disp_text ('(100, 200)', 'window', 50, 200, '#df00df', [], [])

    dev_disp_text (tup, 'window', 'center', 150, '#df00df', [], [])

    dev_set_window_extents (-1, -1, 600, 220)

    stop()

    dev_set_window_extents (-1, -1, 700, 300)

    不同尺寸窗体显示效果:

    窗体尺寸600x220

    窗体尺寸700x300


     ?#22336;?#39068;色

    Halcon为我们提供了一些预设?#22336;?#39068;色,大家可以通过?#22336;?#20018;设置,此外我们还可以使用数值的方式设置颜色,设置格式为#RGB[A],所有数据的范围均为0-255,最后一项A为?#35813;?#24230;,可以不写,默认为ff不?#35813;鰲?#20363;如红色为’#ff0000’或’#ff0000ff’。

    下图是Halcon为我们提供的颜色对照表。

    ?Halcon颜色对照表

     绘制属性、值

    属性和值用于设置文本框的相关?#38382;?#20004;个?#38382;?#22343;为数组,在两个数组中,待设置的属性名称和属性值需要一?#27426;?#24212;。如果我们希望文本框背景色为绿色且阴影为蓝色,则需通过如下代码实现(以下函数中‘\’用于实现代码换行)。

    示例代码:

    dev_disp_text ('(test)', 'window', 12, 12, 'black'\

    , ['box_color','shadow_color'], ['green','blue'])

    显示效果:

    具体?#38382;?#35774;置效果详见下表:

    文本框属性及设置效果


    3 disp_message

    该函数是对disp_text的封装,简化了阴影以及边框圆角的设置。

    ??

    此函数最后一个?#38382;?#21487;用于设置文本框的?#24418;?#20197;及颜色,具体格式如下。

    示例:

    HDevelop代码:

    dev_open_window (0, 0, 512, 512, 'white', WindowHandle)

    Col:=12

    Row:=12

    Dy:=50

    Text:='测试'

    *输入单元素表示是否显示边框默认为’true’

    disp_message (WindowHandle, Text, 'window', Row, Col, 'black', [])

    Row:=Row+40

    disp_message (WindowHandle, Text, 'window', Row, Col, 'black', 'false')

    Row:=Row+40

    *输入多元素时,元素0表示文本框背景设置,元素1表示阴影设置

    disp_message (WindowHandle, Text, 'window', Row, Col, 'black', ['true','false'])

    Row:=Row+40

    *可通过数组直?#30001;?#32622;文本框背景色以及阴影颜色

    disp_message (WindowHandle, Text, 'window', Row, Col, 'black', ['green','#ff11ff'])

    ?执行结果: ? ?

    ? ? ? ? ? ??

    4 字体设置

    ? 获取当前窗口字体

    通过get_font (WindowHandle, Font1)函数,我们可获取窗口当前字体脚本Font1。

    ? 设置字体

    使用函数set_font (WindowHandle, '宋体-20')可设置窗口字体。在Halcon中字体脚本的格式为:字体[-字体风格]-字号。其中“字体风格”包括Normal(默?#24076;old(加粗)、Italic(倾斜)以及BoldItalic(倾斜加粗),在脚本中该项可以省略。

    示例:

    ? 获取可用字体

    不同的系统搭载的字体有所不同,通过query_font (WindowHandle, Font)函数,我们可以获得当前系统可用字体数组Font。


    五 窗口截图

    1 使用?#35828;?#25130;图

    图形窗口右键?#35828;?#30340;最后一项可帮助我们保存当前窗口中的图像,保存图像的分辨?#35270;?#31383;口大小一致。

    2 使用函数截图

    Halcon为我们提供了两个截图函数dump_window_image和dump_window。两者都可对窗体进行截图,不同的是,前者截图后转换为HObject图像,后者则直接保存为本地图像文件。

    示例:

    dev_get_window (WindowHandle)

    read_image (Image, 'printer_chip/printer_chip_01')

    binary_threshold (Image, Region, 'max_separability', 'light', UsedThreshold)

    connection (Region, ConnectedRegions)

    dump_window_image (Image1,WindowHandle)

    dump_window (WindowHandle, 'bmp', 'halcon_dump')


    以上就是本期关于深度学习HDevelop图形窗口操作的全部内容,请关注“大恒图像”微信公众号,视觉学院→大恒课堂栏目下阅读其他关于深度学习的文章,如需购买或试用,请直拨销售热线010-82828878。


  • 获取验证码
    中国体育彩票官方网站app
    pk10赛车计划手机版 北京pk赛车10官网 2018年有什么办法赚钱快 11选5助手官网 f1赛车比赛视频完整版 一分快三免费和值计划 小型照明公司赚钱吗 14场胜负最新预测 微信群玩大小单双骗局 牛牛播放器官网手机版