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

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 29118|回复: 269

[资料] HDevelop绘制生成仿射矩形不显示或者异常?详解图像缓存机制

  [复制链接]
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 859 天

    连续签到: 2 天

    [LV.10]以坛为家III

    188

    主题

    925

    帖子

    5532

    积分

    Rank: 9

    积分
    5532

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

    发表于 2018-6-15 15:58:07 | 显示全部楼层 |阅读模式

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

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

    x
    1.没有加载任何图片的情况下进行绘制仿射矩形或者矩形:
    1. draw_rectangle2 (WindowHandle, Row1, Column1, Phi, Length1, Length2)
    2. gen_rectangle2 (Rectangle, Row1, Column1, Phi, Length1, Length2)
    复制代码
    绘制后的图像如下:

    QQ截图20180615153803.png
    2.右键确认以后,显示仿射矩形就不正确了:
    QQ截图20180615153848.png

    3.相信很多人都遇到过类似这样的问题吧?
    QQ截图20180615154029.png

    还有一种情况就是读取一组坐标然后生成ROI,根本生成不了,那么和这个是同理的!
    主要是在VC++、C#中根据指定的数据生成ROI,比如gen_rectangle1始终生成的ROI是空的
    保存好的区域再次读取出来是空的
    QQ截图20180805105930.png

    常规情况下解决方法大概有下列四种:
    1.reset_obj_db 重置DataBase为指定缓存大小;
    2.读取一张比区域还大图像;
    3.设置默认缓存大小;
    4.设置系统是否裁剪区域为false:
    1. set_system ('clip_region', 'false')
    复制代码


    下面我们来探索下为什么会出现这种情况:
    5.发现我们绘制的仿射矩形的图像变量是这样的,感觉哪儿不对?哪儿不对呢???。。。。
    6.对了,很像标准的齐轴矩形,很奇怪怎么会这样呢???
    7.现在开始验证自己的想法,有没有可能是窗口原因呢?
    8.使用代码获取下这个区域的齐轴矩形大小看看:
    1. smallest_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
    2. gen_rectangle1 (Rectangle1, Row1, Column1, Row2, Column2)
    复制代码
    8.显示图像如下:
    QQ截图20180615154355.png
    9.最后这个Rectangle1是margin显示模式。这个显示就有点意思了,感觉窗口大小就这么大了,莫非窗口有效区域就这么大?

    10.获取下窗口的默认缓存区域大小看看
    1. get_system ('tsp_width', width)
    2. get_system ('tsp_height', height)
    复制代码
    结果不可思议,真的窗口的缓存区域就是这么大,也就是512*512是默认的缓存区域大小了。
    QQ截图20180615154636.png


    11.那就试试512*512大小的画仿射矩形会不会出现被截断的情况:
    1. *关闭当前图形窗口
    2. dev_close_window ( )
    3. *打开一个指定大小的窗口 512*512
    4. dev_open_window_fit_size (0, 0, 512, 512, -1, -1, WindowHandle)
    5. *获取下窗口相关的属性,确认下宽度和高度是512,这样窗口大小和缓存大小一致了
    6. get_window_extents (WindowHandle, Row, Column, Width, Height)

    7. *再次绘制检测框
    8. draw_rectangle2 (WindowHandle, Row1, Column1, Phi, Length1, Length2)
    9. gen_rectangle2 (Rectangle, Row1, Column1, Phi, Length1, Length2)
    复制代码

    12.奇迹出现了,真的是这样的,仿射矩形显示正常了!
    QQ截图20180615155043.png

    13.那如果是这样的话,默认缓存是512*512,我修改大小后可以画吗?试试看,先关掉HDevelop,重新打开恢复默认环境,输入代码:
    1. set_system ('tsp_width', 3000)
    2. set_system ('tsp_height', 3000)
    复制代码
    14.上面的两句代码意思是设置默认的图像缓存的宽度和高度都是3000,这样就足够大了!
    1. set_system ('tsp_width', 3000)
    2. set_system ('tsp_height', 3000)

    3. draw_rectangle2 (3600, Row, Column, Phi, Length1, Length2)
    4. gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
    复制代码
    15.OK!现在仿射矩形图像完全正常了!果然和我猜想的一模一样!

    最后就是要说的,通过read_image加载图片会自动增加缓存大小!
    1. get_system ('tsp_width', width)
    2. get_system ('tsp_height', height)

    3. read_image (Image, 'clip')

    4. get_system ('tsp_width', width)
    5. get_system ('tsp_height', height)
    复制代码

    这个时候你会发现原来的是默认512*512大小,读取图片以后就成了图片的宽度大小了,也就是832*822缓存宽度了!
    同时这个问题在C#\C++联合开发中也是一样存在,比如在C#或者VC++里面绘制矩形是正常的,保存也是正常的(halcon读取没有问题),但是下一次打开加载读取变成空的!

    评分

    参与人数 2视觉币 +10 热心值 +2 收起 理由
    xiaohuiji + 1
    243975432 + 10 + 1 膜拜大佬!

    查看全部评分

    该用户从未签到

    0

    主题

    1

    帖子

    84

    积分

    Rank: 1

    积分
    84
    发表于 2018-6-15 16:07:07 | 显示全部楼层
    其实吧,我也尝试了一下,只要你创建有窗口,句柄有了,就不会错。
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 859 天

    连续签到: 2 天

    [LV.10]以坛为家III

    188

    主题

    925

    帖子

    5532

    积分

    Rank: 9

    积分
    5532

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

     楼主| 发表于 2018-6-15 16:10:07 | 显示全部楼层
    沐橙味 发表于 2018-6-15 16:07
    其实吧,我也尝试了一下,只要你创建有窗口,句柄有了,就不会错。

    我们说的不是一个意思吧?有窗口句柄不代表你可以正常初始化的时候加载区域等ROI进来的,如果比缓存大那么基本上都是空区域。
  • TA的每日心情
    无聊
    2021-9-11 09:33
  • 签到天数: 45 天

    连续签到: 1 天

    [LV.5]常住居民I

    15

    主题

    41

    帖子

    217

    积分

    Rank: 7Rank: 7Rank: 7

    积分
    217

    切换助手验证会员

    发表于 2018-6-15 16:18:25 | 显示全部楼层
    看看原理,感谢楼主分享这么好的资源,需要学习地更加深入!
  • TA的每日心情

    2018-9-4 14:47
  • 签到天数: 24 天

    连续签到: 2 天

    [LV.4]偶尔看看III

    0

    主题

    21

    帖子

    70

    积分

    Rank: 6Rank: 6

    积分
    70
    发表于 2018-6-15 16:55:34 | 显示全部楼层
    我是尤达;P
  • TA的每日心情

    2018-9-12 15:56
  • 签到天数: 28 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    20

    帖子

    85

    积分

    Rank: 6Rank: 6

    积分
    85

    切换助手验证会员

    发表于 2018-6-15 17:44:38 | 显示全部楼层
    看看原理
  • TA的每日心情
    开心
    5 天前
  • 签到天数: 859 天

    连续签到: 2 天

    [LV.10]以坛为家III

    188

    主题

    925

    帖子

    5532

    积分

    Rank: 9

    积分
    5532

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

     楼主| 发表于 2018-6-15 18:11:39 | 显示全部楼层

    你好 尤达大师!
  • TA的每日心情

    2018-6-15 22:12
  • 签到天数: 16 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    16

    帖子

    574

    积分

    Rank: 3

    积分
    574
    发表于 2018-6-15 22:13:15 | 显示全部楼层

    看看原理,感谢楼主分享这么好的资源,需要学习地更加深入!
  • TA的每日心情

    2018-9-12 21:17
  • 签到天数: 25 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    1

    主题

    12

    帖子

    463

    积分

    Rank: 6Rank: 6

    积分
    463
    发表于 2018-6-15 22:52:35 | 显示全部楼层
    看看,学习学习
  • TA的每日心情

    2019-1-11 21:35
  • 签到天数: 151 天

    连续签到: 3 天

    [LV.7]常住居民III

    0

    主题

    55

    帖子

    287

    积分

    Rank: 6Rank: 6

    积分
    287
    发表于 2018-6-16 17:06:26 | 显示全部楼层
    看demo的时候一直不理解这句话,谢谢楼主
    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

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

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

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

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

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