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学习之旅(四)相关推荐

  1. HALCON学习之旅(七)

    HALCON学习之旅(七) 文章目录 HALCON学习之旅(七) 1.MFC与Halcon混合编程 2.C#与Halcon混合编程 3.Halcon测量助手使用 4.Halcon实例进阶一(拟合区域椭 ...

  2. HALCON学习之旅(六)

    HALCON学习之旅(六) 文章目录 HALCON学习之旅(六) 1.Halcon代码如何导出高级编程语言代码 + 配置Halcon/C++编程环境 2.Halcon连续采集相机图像 3.Halcon ...

  3. HALCON学习之旅(五)

    HALCON学习之旅(五) 文章目录 HALCON学习之旅(五) 1.如何获取程序运行时间 2.如何将Bayer图像转换为彩色图像 3.如何将图像转化为矩阵形式 4.如何让图像自适应窗口(补充) 5. ...

  4. HALCON学习之旅(三)

    HALCON学习之旅(三) 文章目录 HALCON学习之旅(三) 1.创建自适应图形窗口 2.霍夫变换寻找图像直线 1.创建自适应图形窗口 原因:默认的图形窗口尺寸为512*512.当图像变量尺寸与图 ...

  5. HALCON学习之旅(二)

    HALCON学习之旅(二) 文章目录 HALCON学习之旅(二) 1.HALCON用户界面操作符 2.HACLON基础语法 ①.运算符 ②.Tuple数组 ③.字符数字格式化 1.HALCON用户界面 ...

  6. HALCON学习之旅(一)

    HALCON学习之旅(一) 文章目录 HALCON学习之旅(一) 1.HALCON介绍 2.HALCON安装包下载 + 配置license许可证文件 3.HALCON初识 1.HALCON介绍 HAL ...

  7. Objective-C学习之旅(四)----内存管理2----retain点语法

    一.retain属性的主要作用 1.O-C内存管理和点语法 1>OC内存管理正常情况要使用大量的retain和relrese操作 2>点语法可以减少使用retain和release的操作 ...

  8. 我的Go语言学习之旅四:各种变量的声明

    同样还是直接看实例吧,比起各种赘述来要实际多了 a:=10; b:="Hello World"; fmt.Printf("%d\n",a); fmt.Print ...

  9. HALCON学习笔记(四)——图像增强

    图像增强:有目的的强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同特征之间的差别,抑制不感兴趣特征,改善图像质量,丰富信息量,满足分析需要. 1.图像增强的概 ...

最新文章

  1. java 绑定事件_Javascripts事件基础和事件绑定
  2. 我应该如何处理MySQL中的--secure-file-priv?
  3. 在CF卡上实现TrueFFS
  4. 【分布式训练】单机多卡—PyTorch
  5. Hadoop框架:MapReduce基本原理和入门案例
  6. Hive UDF 函数指南
  7. 微软彻底拥抱 Python!
  8. Javascript第三章创建数组的两种方式第一课
  9. html前端开发作品,Web前端开发(HTML5+CSS3)
  10. java网上销售外文文献_基于java网上购物论文英文的参考文献欣赏
  11. 移动通信原理中信道的分类
  12. python的jieba分词词性标注
  13. 他被称为“中国杀毒软件之父”,没想到身患残疾,38岁才接触电脑!
  14. 百度云下载神器再升级!
  15. 假脱机技术——实现独占设备变成共享设备
  16. Actor模型和CSP模型的区别
  17. jquery slideToggle 动画问题
  18. springboot项目接入天猫精灵
  19. Navicat设置表的外键
  20. 《庄子》中说到,“一尺之棰,日取其半,万世不竭”。第一天有一根长度为 a的木棍,从第二天开始,每天都要将这根木棍锯掉一半

热门文章

  1. oracle日期修改格式化,oracle日期格式化的实现
  2. c语言的四个函数,C语言学习之动态内存分配的四个函数
  3. asp.net 获取全部在线用户_这款手绘风格的在线制图软件超棒
  4. 克里斯蒂安贝尔_克里斯蒂安·贝尔近照!蝙蝠侠骑单车买咖啡,动作娴熟似外卖小哥...
  5. c语言中next如何用,c语言的数据结构中,next是如何指向下一个元素的?
  6. appium python unittest_appium+python+unittest自动化测试
  7. c语言 文件加密头文件,[C语言]文件加密
  8. [技术博客] 微信小程序的formid获取
  9. JavaScript 获取浏览器版本
  10. SSL 1613——最短路径问题(最短路)