设为首页收藏本站 距【华南国际工业博览会】宝安新馆开幕 : :

Halcon视觉之家 - 51Halcon专注于机器视觉技术

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 29165|回复: 628

[资料] Halcon、C#实现保存原图带字符串文字提示功能(分辨率一致)

  [复制链接]
  • TA的每日心情
    开心
    昨天 09:33
  • 签到天数: 820 天

    连续签到: 1 天

    [LV.10]以坛为家III

    181

    主题

    885

    帖子

    5174

    积分

    Rank: 9

    积分
    5174

    热心会员突出贡献切换助手验证会员最佳新人

    发表于 2018-8-31 21:38:09 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    应用场景:
    很多时候我们需要保存原图的同时,对处理后的结果图像和显示文字一起保存,而且不能损失分辨率,那么就可以用这个小窍门来搞定,因为Halcon自带没有相关算子可以合成,毕竟默认的字符串显示是外挂在指定位置上的,要合成就要想点办法!

    实现效果:
    TIM截图20180831212832.png

    核心原理:
    利用Halcon自带截图dump_window功能,但是需要改进下代码
    Halcon如何实现:
    1. dev_get_window (WindowHandle)
    2. read_image (Image, 'printer_chip/printer_chip_01')
    3. get_image_size (Image, Width, Height)
    4. disp_message (WindowHandle, '测量OK', 'window', 12, 12, 'green', 'true')
    5. edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)

    6. *缓存窗口内容需要和主要窗口保持一致
    7. open_window (0, 0, Width, Height, 0, 'buffer', '', BufferWindowHandle)
    8. set_colored (BufferWindowHandle, 12)
    9. dev_set_window (BufferWindowHandle)
    10. disp_obj (Image, BufferWindowHandle)
    11. disp_obj (Edges, BufferWindowHandle)
    12. disp_message (BufferWindowHandle, '测量OK', 'window', 12, 12, 'green', 'true')
    13. dump_window_image (ImageDump, BufferWindowHandle)
    14. write_image (ImageDump, 'bmp', 0, 'Dump.bmp')
    复制代码


    C#怎么实现:
    1.新建两个Halcon窗口,我们取名为m_WindowHandle1和m_WindowHandle2:
    1. m_WindowHandle1 = hWindowControl1.HalconID;
    2. m_WindowHandle2 = hWindowControl2.HalconID;
    复制代码

    注意,第二个窗口我们主要用于处理截屏,所以要单独开辟,否则会影响第一个实际窗口的效果!
    同时,设置第二个窗口的可见属性为false,也就是Visible设置为false,这样别人就看不到了,实际只能看到一个处理窗口。

    2.读取代码为:
    1. dev_get_window (WindowHandle)
    2. read_image (Image, 'printer_chip/printer_chip_01')
    3. get_image_size (Image, Width, Height)
    4. disp_message (WindowHandle, '测量OK', 'window', 12, 12, 'green', 'true')
    5. edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)

    6. *缓存窗口内容需要和主要窗口保持一致
    7. open_window (0, 0, Width, Height, 0, 'buffer', '', BufferWindowHandle)
    8. set_colored (BufferWindowHandle, 12)
    9. dev_set_window (BufferWindowHandle)
    10. disp_obj (Image, BufferWindowHandle)
    11. disp_obj (Edges, BufferWindowHandle)
    12. disp_message (BufferWindowHandle, '测量OK', 'window', 12, 12, 'green', 'true')
    13. dump_window_image (ImageDump, BufferWindowHandle)
    14. write_image (ImageDump, 'bmp', 0, 'Dump.bmp')
    复制代码

    这个Buffer类型的窗口不仅可以解决窗口闪烁问题,实现双缓存效果,而且可以制作分辨率一致结果图像。


    3.保存截图代码为:
    1. private void SaveImage()
    2.         {
    3.             try
    4.             {
    5.                 HOperatorSet.SetWindowExtents(m_WindowHandle2, 0, 0, m_imgWidth, m_imgHeight);
    6.                 HOperatorSet.SetPart(m_WindowHandle2, 0, 0, m_imgHeight - 1, m_imgWidth - 1);
    7.                 set_display_font(m_WindowHandle2, 20, "mono", "true", "false");
    8.                 HOperatorSet.DispObj(m_Image, m_WindowHandle2);
    9.                 disp_message(m_WindowHandle2, "2018-08-31 20:30:45", "window", 12, 12, "green", "false");
    10.                 HOperatorSet.DumpWindow(m_WindowHandle2, "bmp", "C:/Users/Admin/Desktop/2.bmp");
    11.             }
    12.             catch (HalconException HDevExpDefaultException)
    13.             {
    14.                 m_Image.Dispose();
    15.                 throw HDevExpDefaultException;
    16.             }
    17.             m_Image.Dispose(); //保存完了才释放
    18.         }
    复制代码


    其中最关键的两句就是:
    1. HOperatorSet.SetWindowExtents(m_WindowHandle2, 0, 0, m_imgWidth, m_imgHeight);
    2. HOperatorSet.SetPart(m_WindowHandle2, 0, 0, m_imgHeight - 1, m_imgWidth - 1);
    复制代码

    缺一不可,第一句是改变窗口大小为图片大小,第二句是设置图片大小适应窗口大小显示,否则将导致截图大小不一致!

    4.剩下的就自己玩了,当然这个是一个小技巧,因为Halcon中文字实际上是外挂上去的,要真正合成只有dump_window了,你用其他库也可以实现,这里我们主要用Halcon实现,其实对程序本身影响完全没有,而且不占位置,不占显示,so easy!

    5.如果觉得隐藏麻烦,可以用Halcon自带的打开缓存窗口的方式进行操作,默认是不可见的,最后做dump_window_image即可!
    1. open_window (0, 0, 图像宽度, 图像高度, 0, 'buffer', '', WindowHandle)
    复制代码


    下载C#源代码(采用VS2010 + Halcon12.0.3 x86开发):
    链接:https://pan.baidu.com/s/1jJunxvflFvcvU7_HPopU8A 密码:0gvt



    评分

    参与人数 1热心值 +1 收起 理由
    Bruce123 + 1

    查看全部评分

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情

    2019-3-13 09:18
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    10

    主题

    39

    帖子

    578

    积分

    Rank: 6Rank: 6

    积分
    578

    切换助手验证会员

    发表于 2018-8-31 21:48:05 | 显示全部楼层
    谢谢老师

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情

    2018-8-26 07:54
  • 签到天数: 24 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    4

    主题

    51

    帖子

    566

    积分

    Rank: 8Rank: 8Rank: 8Rank: 8

    积分
    566

    切换助手验证会员

    发表于 2018-8-31 22:50:57 | 显示全部楼层

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情

    2018-7-8 16:09
  • 签到天数: 8 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    0

    主题

    12

    帖子

    451

    积分

    Rank: 8Rank: 8Rank: 8Rank: 8

    积分
    451

    切换助手验证会员

    发表于 2018-8-31 23:44:48 | 显示全部楼层
    感谢大神啰 和

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    该用户从未签到

    0

    主题

    1

    帖子

    27

    积分

    Rank: 1

    积分
    27
    发表于 2018-9-1 00:49:59 | 显示全部楼层
    学习,谢谢。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情
    开心
    2021-7-4 06:22
  • 签到天数: 102 天

    连续签到: 1 天

    [LV.6]常住居民II

    0

    主题

    30

    帖子

    315

    积分

    Rank: 8Rank: 8Rank: 8Rank: 8

    积分
    315

    切换助手验证会员

    发表于 2018-9-1 01:09:54 | 显示全部楼层
    这个可是非常实用的技巧,学习学习。

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情

    2020-12-21 21:36
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]常住居民II

    1

    主题

    106

    帖子

    851

    积分

    Rank: 3

    积分
    851
    发表于 2018-9-1 04:52:20 | 显示全部楼层
    学习学习,谢谢

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    该用户从未签到

    0

    主题

    2

    帖子

    37

    积分

    Rank: 1

    积分
    37
    发表于 2018-9-1 07:41:30 | 显示全部楼层
    谢谢老师

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

  • TA的每日心情

    2021-6-4 09:44
  • 签到天数: 272 天

    连续签到: 1 天

    [LV.8]以坛为家I

    0

    主题

    83

    帖子

    1148

    积分

    Rank: 4Rank: 4

    积分
    1148

    切换助手验证会员

    发表于 2018-9-1 08:20:14 | 显示全部楼层

    学习学习,谢谢

    1.发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

    2.提问请组织好自己的逻辑,标题注明大概是什么问题,问题内容写详细,需提供问题症状、错误代码、截图、位置等等信息,不要让别人去猜你想问啥;

    3.如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题前面加上【已解决】

    4.回报帮助你解决问题的坛友,右下角【免费评分】赠与对方视觉币和热心值,伸手党遭人唾弃,做一个热心并受欢迎的人!

    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    算子查询| 申请友链| 小黑屋| 手机版| Archiver|

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号-2 粤公网安备44030602000670号

    快速回复 返回顶部 返回列表