全国服务热线:

15861139266

Halcon机器视觉培训教程之防止多窗口闪烁的方法
时间:2024-11-06 13:20:13 点击:3208 标签:
在使用苏州 Halcon机器视觉进行图像显示时,窗口图像可能会出现闪烁问题。为解决这个问题,Halcon 提供了防止闪烁的函数set_system,通过设置参数值'flush_graphic'为False可以暂停窗口刷新,将需要显示的内容存放到显示队列中,绘制完要显示的内容后再将其设置为True,统一显示显示队列中的值。这个方法在防止单窗口闪烁时非常有效,但如果系统存在两个或多个窗口,且每个窗口随机更新图像,无法做到每个窗口同时更新,这个方法就显得无能为力了。
为了解决多窗口防止闪烁的问题,可以采用双窗口缓存的办法,具体步骤如下:

  1. 获取显示窗口的尺寸

使用window.GetWindowExtents(out hv_WindowRow, out hv_WindowColumn, out hv_WindowWidth, out hv_WindowHeight);获取显示窗口的行位置、列位置、宽度和高度。

  1. 打开一个缓冲窗口

使用windowBuffer.OpenWindow(hv_WindowRow, hv_WindowColumn, hv_WindowWidth, hv_WindowHeight, 0, "buffer","");打开一个缓冲窗口。在 Halcon 中,OpenWindow函数的定义如下:

    • 前四个参数int row, int column, int width, int height为窗口的位置和尺寸。
    • HTuple fatherWindow是该缓存窗口隶属的窗口号。
    • string mode是打开窗口的模式,包括:
      • 'visible':正常的图像显示模式。
      • 'invisible':窗口是隐藏区,用于后台记录用,不显示。
      • 'transparent':图像窗口是透明的,不显示图像,但是可以接受鼠标信息,可输出信息。
      • 'buffer':这个模式也是不显示的,显示时需要将结果复制到显示窗口。
    • string machine是计算机名称,默认为空即可。
  1. 将显示内容显示到缓存窗口

使用windowBuffer.SetPart(viewPort.ImagePart.Y, viewPort.ImagePart.X, viewPort.ImagePart.Bottom, viewPort.ImagePart.Right);将显示内容显示到缓存窗口。SetPart函数比较简单,不在此多做介绍。

  1. 将缓存窗口的可视化结果复制到要显示的窗口中

使用windowBuffer.CopyRectangle(window, 0, 0, hv_WindowHeight - 1, hv_WindowWidth - 1, 0, 0);将缓存窗口的可视化结果复制到要显示的窗口中。
该方法采用缓存窗口的方式防止图像窗口闪烁,避免了采用set_system设置系统级参数导致多窗口显示不理想的问题。



立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
深度学习
机器视觉软件开发课
上位机软件开发课
电气类课程
联系方式
电话:15861139266
邮箱:75607802@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:大林机器视觉培训所有 备案号:苏ICP备14016686号-9

本站关键词:上位机培训 机器视觉软件开发培训 上位机运动控制培训 深度学习培训 网站标签