http://www.bubuko.com/infodetail-2274185.html
在Halcon中,Region和XLD之间可以彼此转换。但这种转换并不是“无损”的,XLD可以是不闭合的,但是Region一定是闭合的。因此,如果将不闭合的XLD转为Region,然后再转回XLD,那么转换后的XLD和原先的XLD就有了一定的区别。
言归正传,先说说Region的缩放。
一、Region的缩放
Region的缩放很简单,有zoom_region算子,其签名如下,其中ScaleWidth, ScaleHeight是宽、高的缩放比例因子:
zoom_region(Region : RegionZoom : ScaleWidth, ScaleHeight : )
缩放的时候,Row和Column都根据缩放比例因子来放大或缩小。因此缩放后,Region的位置会移位,如果不想让缩放后的Region移位,可以这样:
set_system (‘clip_region‘, ‘false‘) zoom_region (Region, RegionZoom, 0.5, 0.5)area_center (Region, Area, Row, Column) area_center (RegionZoom, Area1, Row1, Column1) move_region (RegionZoom, RegionMoved, Row - Row1, Column - Column1)
需要注意的是,Region缩放后,经常会有一部分跑到画布外面,Halcon默认是将画布外部的Region进行裁切的,如果不想裁切,可以在程序开始加上set_system (‘clip_region‘, ‘false‘),即不裁切画布外面的部分。
二、XLD的缩放
本文开头分析过,“XLD——Region——XLD”的转换不是无损的,但是如果不介意这一点(或者说影响不大),XLD的缩放就可以通过Region的缩放为中介。
1、使用Region为中介缩放XLD
1 gen_image_const (Image, ‘byte‘, 8200, 4200) 2 set_system (‘clip_region‘, ‘false‘) 3 read_contour_xld_dxf (Contours,‘01.dxf‘, [], [], DxfStatus) 4 *转为region 5 gen_region_contour_xld (Contours, Region, ‘margin‘) 6 *缩放region 7 zoom_region (Region, RegionZoom, 0.2, 0.2) 8 *转回XLD 9 gen_contour_region_xld (RegionZoom, Contours2, ‘border‘)
如果是下面这样的XLD呢?
用上面的方法的话,发现结果完全不对,如下图:
那么应该怎么弄呢?
2、通过缩放XLD中每个点的坐标值来缩放XLD
1 gen_image_const (Image, ‘byte‘, 8200, 4200) 2 set_system (‘clip_region‘, ‘false‘) 3 read_contour_xld_dxf (Contours,‘02.dxf‘, [], [], DxfStatus) 4 count_obj (Contours, Num) 5 6 *XLD上点的采样间隔(为了缩短处理时间) 7 Step := 10 8 *缩放比例 9 Scale := 0.3 10 gen_empty_obj (Contour2) 11 for i := 1 to Num by 1 12 select_obj (Contours, Contour, i) 13 get_contour_xld (Contour, Row, Col) 14 Row1 := [] 15 Col1 := [] 16 for j := 0 to |Row|-1 by Step 17 18 Row1:=[Row1,Row[j] * Scale] 19 Col1:=[Col1,Col[j] * Scale] 20 21 endfor 22 23 *判断轮廓是不是闭合,如果是闭合的,那么使最后一个点与第一个点重合(即让缩放后的XLD也闭合) 24 test_closed_xld (Contour, IsClosed) 25 if (IsClosed == 1) 26 Row1:=[Row1,Row[0] * Scale] 27 Col1:=[Col1,Col[0] * Scale] 28 endif 29 30 gen_contour_polygon_xld (Contour1, Row1, Col1) 31 smooth_contours_xld (Contour1, SmoothedContours, 5) 32 concat_obj (Contour2, SmoothedContours, Contour2) 33 endfor
其中:
get_contour_xld (Contour, Row, Col)是得到XLD中的一系列点;
gen_contour_polygon_xld (Contour1, Row1, Col1)是通过一系列点重建XLD。
结果如下:
Halcon中缩放Region或XLD的方法研究
2018年04月02日 (845)
2018年04月01日 (1104)
2018年03月31日 (1091)
2018年03月30日 (1252)
2018年03月29日 (1217)
2018年03月28日 (1259)
2018年03月27日 (1242)
2018年03月26日 (1001)
2018年03月25日 (937)
- 二值形态学——开、闭运算 2018-04-02
- notes 2018-04-02
- OO第一次反思与总结 2018-04-03
- Spring与Junit测试整合 2018-04-02
- 花真完议须果容制iffr8YCp 2018-04-03
- Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入 2018-04-02
- 铁乐学python_day09_作业 2018-04-02
- POJ - 2226 Muddy Fields 2018-04-02
- BZOJ2152 - 聪聪可可 2018-04-02
- 4.2 2018-04-02
- 北京网信办等部门联合约谈,京东回应认真接受批评,全面严肃整改 2018-04-02
- 青腾汇私访|保利的野心,再入局万亿级社区消费 2018-04-02
- 机械革命深海幽灵Z2,开启游戏本全面屏时代! 2018-04-02
- 拼多多“低价爆款”的全部秘密,都在这家年销量过亿的工厂里 2018-04-02
- 太疯狂!外卖员闯灯924次,1天闯5次,最高一天18次 2018-04-02
- 滴滴回应女乘客怀疑司机不轨:正核实 向当事人致歉 2018-04-02
- 暴风TV发布40吋电视暴风AI电视4(40X)售价999元 2018-04-02
- ofo否认愚人节传言“与摩拜正商谈合并” 2018-04-02
- 苹果股价3月份下跌5.8% 曾连续6个交易日下跌 2018-04-02
- 天宫一号再入大气层坠落南太平洋中部:欢迎你回家! 2018-04-02
- 1.form
- 2.strtolower()
- 3.font
- 4.background-origin
- 5.transition-delay
- 6.选择器:empty
- 7.line-height
- 8.PHP Timezones
- 9.选择器:disabled
- 10.font-size
阳和移动开发 汇智网 天码营 HarriesBlog 程序员客栈 PHP教程 插件网
000002号
http://www.bubuko.com/infodetail-2274185.html相关推荐
- 清风电子—keil5,无法运行官方的代码程序,出现这样的错误显示 \objects\main.o:No such file or directory
清风电子-keil5,无法运行官方的代码程序,出现这样的错误显示 \objects\main.o:No such file or directory 一般有四个原因 1,电脑系统用户名有中文字符(你的 ...
- linux 终端 含义,ubuntu终端中@前后的字符串含义及修改-布布扣-bubuko.com
@后面的代表的是主机名. [email protected],这样在编译程序的时候可以在一行上非常清楚. 1.如果主机名比较长.可以在终端中通过sudu hostname xxx (xxx)表示你想要 ...
- 主要用于收集数据库服务器性能参数,数据库-布布扣-bubuko.com
一系统数据库: information_schema: 虚拟库, 不占磁盘空间, 存储数据库启动后的一些参数, 如用户表信息, 列信息/权限信息/字符信息等等 performance_schema: ...
- hadoop,spark,scala,flink 大数据分布式系统汇总
20220314 https://shimo.im/docs/YcPW8YY3T6dT86dV/read 尚硅谷大数据文档资料 iceberg相当于对hive的读写,starrocks相当于对mysq ...
- delphi 10 seattle 中 解决IOS 9 限制使用HTTP 服务问题
IOS 9 于17号早上正式开始推送,早上起来立马安装,这次升级包只有1G, 安装空间也大大降低(想起IOS 8 升级时,几乎把手机里面的东西删光了,满眼都是泪). 虽然安装后,网上几乎是铺天盖地的吐 ...
- Caffe源码中各种依赖库的作用及简单使用
1. Boost库:它是一个可移植.跨平台,提供源代码的C++库,作为标准库的后备. 在Caffe中用到的Boost头文件包括: (1).shared_ptr.hpp:智能指针,使用它可以不 ...
- springboot 头像上传 文件流保存 文件流返回浏览器查看 区分操作系统 windows 7 or linux...
1 //我的会员中心 头像上传接口 2 /*windows 调试*/ 3 @Value("${appImg.location}") 4 private String winPath ...
- 用好 Git 和 SVN,轻松驾驭版本管理
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者 | 凌承一 来源 | bubuko.com/infodeta ...
- centos开机启动zookeeper
2019独角兽企业重金招聘Python工程师标准>>> 1.切换目录到/etc/rc.d/init.d 2.创建zookeeper文件 3.然后为这个文件添加可执行权限chmod + ...
最新文章
- 中国电子信息工程科技发展十大趋势(2019)发布
- java log4j mysql_java – 配置log4j属性文件以存储在mysql数据库中
- mysql, 一对多查询, 统计一表数量
- linux自动运行python脚本,执行脚本如何在linux环境下自启动
- php表单显示mysql数据库_php用表单形式显示数据库信息
- 程序员修神之路--redis做分布式锁可能不那么简单
- 菜鸟读jQuery 2.0.3 源码分析系列(1)
- 在web项目中集成xfire的方法
- matlab画图点形状,matlab画图点的形状
- Windows2019在IIS下添加.NET Framework 3.5 NetFx3 失败 (状态为:0x800f0950)的解决办法)
- 135编辑器代码是html吗,不会代码,你也能做背景样式!!!
- [02]时区时间获取
- 人工智能时代,机遇与挑战并存
- 小米路由器3刷openWRT系统的实践过程
- linux下,pip安装lap出现问题 ,已解决,亲测有效
- 值得关注的IT技术博客
- JEECG容器化部署:Alpine镜像方式
- 云和恩墨2022届春季校招正式启动!
- Linux嵌入式开发——C编程
- 电影《可可西里》散记