HALCON学习之旅(四)
HALCON学习之旅(四)
文章目录
- HALCON学习之旅(四)
- 1、如何对区域进行反选,补集,交集,合并操作
- 2、如何对区域进行填充操作
- 3、如何根据区域特征过滤区域
- 4、如何画各种交互ROI图形
- 5、读写Region区域
- 6、读写XLD轮廓
1、如何对区域进行反选,补集,交集,合并操作
反选:
**************反选**************
*打开一个新的图形窗口
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)*创建一个圆
*参数1 生成的圆(输入变量)
*参数2 中心行x
*参数3 中心列y
*参数4 圆的半径
gen_circle(Circle, 224.5, 250.5, 131.727)*清除活动图形窗口的内容。
dev_clear_window()*返回区域的补码(反选)
*参数1 输入区域
*参数2 互补区域
complement(Circle, RegionComplement)*清除活动图形窗口的内容。
dev_clear_window()
效果展示
补集:
**************获取一个区域的补集**************
*创建一个圆
gen_circle(Circle1, 122.5, 126.5, 69.5)*创建一个圆
gen_circle(Circle2, 184.5, 179.5, 73.727)*清除活动图形窗口的内容。
dev_clear_window()*计算两个区域的差异
*参数1 要处理的区域1
*参数2 要处理的区域2
*参数3 结果区域(从区域1中减去这两个区域的联合)
difference(Circle1, Circle2, RegionDifference)*清除活动图形窗口的内容。
dev_clear_window()**************获取两个区域合并后的区域与两个区域交集的补集**************
*创建一个圆
gen_circle (Cricle3, 114.5, 127.5, 89.3588)*创建一个圆
gen_circle (Cricle4, 163.5, 171.5, 94.8472)*清除活动图形窗口的内容。
dev_clear_window()*计算两个区域的对称差异
*参数1 要处理的区域1
*参数2 要处理的区域2
*参数3 结果区域(区域1和区域2的并集减去区域1和区域2的联合)
symm_difference(Cricle3, Cricle4, RegionDifference1)*清除活动图形窗口的内容。
dev_clear_window()
效果展示
交集:
**************计算两个区域的交集**************
*创建一个圆
gen_circle (Cricle5, 114.5, 127.5, 89.3588)*创建一个圆
gen_circle (Cricle6, 163.5, 171.5, 94.8472)*计算两个区域的交集
*参数1 要处理的区域1
*参数2 要处理的区域2
*参数3 结果区域(区域1和区域2的联合)
intersection(Circle1, Circle2, RegionIntersection)*清除活动图形窗口的内容。
dev_clear_window()
效果展示
合并:
**************返回所有输入区域的联合***************读取图像变量
read_image(Image, 'fabrik')*改变活动图形窗口输出颜色(这边的12是指输出的内容可以是12种颜色)
dev_set_colored(12)*二值化
threshold(Image, Region, 128, 255)*获取连通区域
connection(Region, ConnectedRegions)*返回所有输入区域的联合
*参数1 要计算联合的区域
*参数2 所有输入区域的联合(原来分开的多个区域联合成一个整体区域)
union1(ConnectedRegions, RegionUnion1)*清除活动图形窗口的内容。
dev_clear_window()**************将两个区域联合***************创建一个圆
gen_circle (Circle7, 101.5, 102.5, 63.2456)*创建一个圆
gen_circle (Circle8, 295.5, 285.5, 75.9276)*返回两个区域的并集
*参数1 要处理的区域1
*参数2 要处理的区域2
*参数3 结果区域(将区域1和区域2的并集)
union2 (Circle7, Circle8, RegionUnion2)
效果展示
2、如何对区域进行填充操作
*如何对区域进行填充操作*************无条件填充*************
*读取图像变量
read_image (Image, 'egypt1')*二值化
threshold(Image, Region, 0, 140)*填补区域中的漏洞
*参数1 包含孔的输入区域
*参数2 没有孔的输出区域
fill_up(Region, RegionFillUp)*************有条件填充**************读取图像变量
read_image(Image1, 'monkey')*二值化
threshold(Image1, Region1, 120, 255)*填充具有给定形状特征的区域中的孔
*参数1 输入区域
*参数2 带有填充孔的输出区域
*参数3 使用的形状特征 'anisometry'等距, 'area'面积, 'compactness'紧密度, 'convexity'凸度, 'inner_circle'内圆, 'outer_circle'外圆, 'phi'角度, 'ra'椭圆长半轴, 'rb'椭圆短半轴 默认值'area'
*参数4 功能的最小值 默认值1.0
*参数5 功能的最大值 默认值100.0
fill_up_shape(Region1, RegionFillUp1, 'area', 1, 100) //只对面积在1到100以内的区域填充
效果展示
3、如何根据区域特征过滤区域
*如何根据特征过滤区域和XLD*打开一个新的图形窗口
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)*读取图像变量
read_image(Image, 'fabrik')*二值化
threshold(Image, Region, 128, 255)*获取连通区域
connection(Region, ConnectedRegions)*根据面积范围(8000, 9000)进行过滤
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 8000, 9000)*运算符将给定区域的形状与默认形状进行比较。如果该区域具有相似的形状,则将其用于输出。
*参数1 要选择的输入区域
*参数2 具有所需形状的区域
*参数3 要检查的形状特征 'max_area'、'rectangle1'、'rectangle2' 默认值:'max_area'
*参数4 相似性度量 默认值:70
select_shape_std(ConnectedRegions, SelectedRegions1, 'rectangle1', 90)*筛选出彼此有一定关系的区域
*参数1 要检查的区域
*参数2 区域相比
*参数3 满足条件的区域
*参数4 要检测的特征'covers'、'distance_center'、'distance_contour'、'distance_dilate'、'fits'、'overlaps_abs'、'overlaps_rel' 默认值:'covers'
*参数5 特征下边界 默认值:50
*参数6 特征上边界 默认值:100
select_shape_proto(ConnectedRegions, SelectedRegions, SelectedRegions2, 'distance_center', 0, 200)
效果展示
4、如何画各种交互ROI图形
*如何画各种交互ROI图像*创建一个新的图形窗口
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)*定义区域填充模式
dev_set_draw ('margin')*交互式画圆(绘制圆结束后,按鼠标右键结束)
*参数1 图形窗口ID
*参数2 重心的行索引
*参数3 重心的列索引
*参数4 圆的半径
draw_circle(WindowHandle, Row, Column, Radius)*创建一个圆
gen_circle (Circle, Row, Column, Radius)*交互式话椭圆
*参数1 图形窗口ID
*参数2 重心的行索引
*参数3 重心的列索引
*参数4 前半轴方向(以弧度为单位)
*参数5 前半轴
*参数6 后半轴
draw_ellipse(WindowHandle, Row1, Column1, Phi, Radius1, Radius2)*创建一个椭圆
gen_ellipse(Ellipse, Row1, Column1, Phi, Radius1, Radius2)*交互式画多边形
*参数1 区域,包括所有绘制点
*参数2 图形窗口ID
draw_polygon(PolygonRegion, WindowHandle)*交互式画线
*参数1 图形窗口ID
*参数2 开始的行索引
*参数3 开始的列索引
*参数4 结束的行索引
*参数5 结束的列索引
draw_line(WindowHandle, Row11, Column11, Row2, Column2)*在窗口中画线
*参数1 图形窗口ID
*参数2 开始的行索引
*参数3 开始的列索引
*参数4 结束的行索引
*参数5 结束的列索引
disp_line (WindowHandle, Row11, Column11, Row2, Column2)*交互式画标准矩形
*参数1 图形窗口ID
*参数2 左上角行索引
*参数3 左上角列索引
*参数4 右上角行索引
*参数5 右上角列索引
draw_rectangle1(WindowHandle, Row12, Column12, Row21, Column21)*创建一个平行与坐标轴的矩形
*参数1 创建矩形变量
*参数2 左上角行索引
*参数3 左上角列索引
*参数4 右上角行索引
*参数5 右上角列索引
gen_rectangle1(Rectangle, Row12, Column12, Row21, Column21)*交互式画仿射矩形
*参数1 图形窗口ID
*参数2 中心行索引
*参数3 中心列索引
*参数4 以弧度为单位较大半轴的方向
*参数5 较大的半轴
*参数6 较小的半轴
draw_rectangle2(WindowHandle, Row3, Column3, Phi1, Length1, Length2)*创建一个任意方向的矩形
*参数1 创建的矩形
*参数2 中心行索引
*参数3 中心列索引
*参数4 以弧度为单位较大半轴的方向
*参数5 较大的半轴
*参数6 较小的半轴
gen_rectangle2(Rectangle1, Row3, Column3, Phi1, Length1, Length2)*交互式画闭合区域
*参数1 交互式创建区域
*参数2 活动窗口ID
draw_region(Region, WindowHandle)
效果展示
5、读写Region区域
*读写Region(区域)*创建一个新的图形窗口
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)*读取图像变量
read_image (Image, 'fabrik')*交互之绘制矩形
draw_rectangle1(WindowHandle, Row1, Column1, Row2, Column2)*创建矩形
gen_rectangle1(Rectangle, Row1, Column1, Row2, Column2)*将区域写入文件
*参数1 返回图像区域、
*参数2 区域文件名称
write_region (Rectangle,'F:/halcon_Learning/writeRegion.hobj')*读取二进制图像或HALCON区域
*参数1 读取区域变量
*参数2 要读取的区域名称
read_region (Rectangle1,'F:/halcon_Learning/writeRegion.hobj')
效果展示
6、读写XLD轮廓
*读写XLD(轮廓)*读取图像变量
read_image (Image, 'fabrik')*使用Deriche, Lanser, Shen或Canny滤波器提取亚像素精确边缘
*参数1 输入图像变量
*参数2 提取的边缘
*参数3 要应用的边缘运算符
*参数4 过滤器参数:较小的值会导致很强的平滑,因此细节较少 默认值: 1.0
*参数5 滞后阈值操作的下阈值 默认值: 20
*参数6 滞后阈值操作的上限阈值 默认值: 40
edges_sub_pix (Image, Edges, 'canny', 1, 20, 40)*将XLD轮廓以DXF格式写入文件
*参数1 要写入的 XLD 轮廓。
*参数2 DXF 文件的名称。
write_contour_xld_dxf (Edges, 'Coutour.dxf')*从 DXF 文件中读取 XLD 轮廓
*参数1 读取 XLD 轮廓(输出对象)
*参数2 DXF 文件的名称
*参数3 可以为 DXF 输入调整的通用参数的名称('max_approx_error'、'min_num_points'、'read_attributes'), 默认值[]
*参数4 可以为 DXF 输入调整的通用参数的值,默认值[]
*参数5 状态信息(输出)
read_contour_xld_dxf(Contours, 'F:/halcon_Learning/Coutour.dxf', [], [], DxfStatus)
效果展示
本章内容到此就结束了,内容很简单,都是一些需要记忆的内容。但代码量稍稍有点多,耐心学习哦
HALCON学习之旅(四)相关推荐
- HALCON学习之旅(七)
HALCON学习之旅(七) 文章目录 HALCON学习之旅(七) 1.MFC与Halcon混合编程 2.C#与Halcon混合编程 3.Halcon测量助手使用 4.Halcon实例进阶一(拟合区域椭 ...
- HALCON学习之旅(六)
HALCON学习之旅(六) 文章目录 HALCON学习之旅(六) 1.Halcon代码如何导出高级编程语言代码 + 配置Halcon/C++编程环境 2.Halcon连续采集相机图像 3.Halcon ...
- HALCON学习之旅(五)
HALCON学习之旅(五) 文章目录 HALCON学习之旅(五) 1.如何获取程序运行时间 2.如何将Bayer图像转换为彩色图像 3.如何将图像转化为矩阵形式 4.如何让图像自适应窗口(补充) 5. ...
- HALCON学习之旅(三)
HALCON学习之旅(三) 文章目录 HALCON学习之旅(三) 1.创建自适应图形窗口 2.霍夫变换寻找图像直线 1.创建自适应图形窗口 原因:默认的图形窗口尺寸为512*512.当图像变量尺寸与图 ...
- HALCON学习之旅(二)
HALCON学习之旅(二) 文章目录 HALCON学习之旅(二) 1.HALCON用户界面操作符 2.HACLON基础语法 ①.运算符 ②.Tuple数组 ③.字符数字格式化 1.HALCON用户界面 ...
- HALCON学习之旅(一)
HALCON学习之旅(一) 文章目录 HALCON学习之旅(一) 1.HALCON介绍 2.HALCON安装包下载 + 配置license许可证文件 3.HALCON初识 1.HALCON介绍 HAL ...
- Objective-C学习之旅(四)----内存管理2----retain点语法
一.retain属性的主要作用 1.O-C内存管理和点语法 1>OC内存管理正常情况要使用大量的retain和relrese操作 2>点语法可以减少使用retain和release的操作 ...
- 我的Go语言学习之旅四:各种变量的声明
同样还是直接看实例吧,比起各种赘述来要实际多了 a:=10; b:="Hello World"; fmt.Printf("%d\n",a); fmt.Print ...
- HALCON学习笔记(四)——图像增强
图像增强:有目的的强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同特征之间的差别,抑制不感兴趣特征,改善图像质量,丰富信息量,满足分析需要. 1.图像增强的概 ...
最新文章
- java 绑定事件_Javascripts事件基础和事件绑定
- 我应该如何处理MySQL中的--secure-file-priv?
- 在CF卡上实现TrueFFS
- 【分布式训练】单机多卡—PyTorch
- Hadoop框架:MapReduce基本原理和入门案例
- Hive UDF 函数指南
- 微软彻底拥抱 Python!
- Javascript第三章创建数组的两种方式第一课
- html前端开发作品,Web前端开发(HTML5+CSS3)
- java网上销售外文文献_基于java网上购物论文英文的参考文献欣赏
- 移动通信原理中信道的分类
- python的jieba分词词性标注
- 他被称为“中国杀毒软件之父”,没想到身患残疾,38岁才接触电脑!
- 百度云下载神器再升级!
- 假脱机技术——实现独占设备变成共享设备
- Actor模型和CSP模型的区别
- jquery slideToggle 动画问题
- springboot项目接入天猫精灵
- Navicat设置表的外键
- 《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a的木棍,从第二天开始,每天都要将这根木棍锯掉一半
热门文章
- oracle日期修改格式化,oracle日期格式化的实现
- c语言的四个函数,C语言学习之动态内存分配的四个函数
- asp.net 获取全部在线用户_这款手绘风格的在线制图软件超棒
- 克里斯蒂安贝尔_克里斯蒂安·贝尔近照!蝙蝠侠骑单车买咖啡,动作娴熟似外卖小哥...
- c语言中next如何用,c语言的数据结构中,next是如何指向下一个元素的?
- appium python unittest_appium+python+unittest自动化测试
- c语言 文件加密头文件,[C语言]文件加密
- [技术博客] 微信小程序的formid获取
- JavaScript 获取浏览器版本
- SSL 1613——最短路径问题(最短路)