没啥好讲的,这里对于不是数组部分的东西就不进行讲解了。

  1. area_center(RegionOpening,Area, Row, Column)。使用area_center来求区域的中心和面积时,返回Area, Row, Column这三个参数。当区域的个数大于1时,Area, Row, Column都是一个数组

    返回的Area, Row, Column这个三个数组,Area是根据面积从小到达进行排序的,Row和Column是对应Area的区域的中心,即Row和Column的第一个元素是面积最小的区域的中心坐标

  2. tuple_sort_index(Column,Sorted_Column):对Column进行排序(从小到大),返回的是排序后的元素的索引。例如Column是【300,200, 100】,返回的Sorted_Column=【2,1,0】
  3. new_row := Row[Sorted_Column]:让Row以Sorted_Column的方式进行排序,然后将值赋予new_row。例如Row=【20, 10, 50】,Sorted_Column=【2,1,0】----->  Row[Sorted_Column]  = 【50,10,20】
  4. Halcon中的数组只能是1xN的数组, 即数组里面不能套数组

示例代码:

read_image(Image, 'printer_chip/printer_chip_01')*开启一个大小为512,512的窗口
dev_open_window(0, 0, 512, 512, 'black', WindowHandle)
*显示图像
dev_display(Image)
*在窗口上绘制矩形ROT区域,Row1,Column1是左上角坐标, Row2,Column2是右下角坐标
draw_rectangle1(WindowHandle, Row1, Column1, Row2, Column2)
*生成矩形ROI区域
gen_rectangle1(Rectangle_Roi, Row1, Column1, Row2, Column2)
*对图片进行处理,只留下ROI区域的图像,其余部分都变成黑的
reduce_domain(Image, Rectangle_Roi, ImageReduced) *对图片进行均值滤波操作,10,10是kernel的大小
mean_image(ImageReduced, ImageMean, 10, 10)
*对原图和均值后的图进行像素值求差计算,如果差值超过5则保留
dyn_threshold(ImageReduced, ImageMean, RegionDynThresh, 5, 'dark')
*将区域打散
connection(RegionDynThresh, ConnectedRegions)
*使用面积来进行过滤
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 4000, 99999)
*对区域进行填充
fill_up(SelectedRegions, RegionFillUp)
*使用大小为50*50的矩形区域来进行开开运算操作,放的下50*50矩阵的区域保留,放不下的就剔除
opening_rectangle1(RegionFillUp, RegionOpening, 50, 50)
*统计区域的数量
count_obj(RegionOpening, Number)
*求每一个区域的中心和面积,当区域的个数大于1时,Area, Row, Column都是一个数组
area_center(RegionOpening,Area, Row, Column)
*因为区域都在同一水平线上,所以根据column来进行排序操作,从小到大。返回的是排序后index的数组
tuple_sort_index(Column,Sorted_Column) *halcon里的数组操作,就是把Row和Column的元素按照上面的排序方式来排序
new_row := Row[Sorted_Column]
new_column := Column[Sorted_Column] *创建一个数组来统计相邻的两个区域之间的距离
distance_list := []
*使用for循环来遍历,计算当前区域和下一个区域的距离
for j := 0 to Number-1 by 1
*描绘出区域的中心位置
gen_circle(Circle, new_row[j], new_column[j], 10)
*因为这里要描绘出每个区域的中心,所以j等于Number-1还要绘制中心
*但j等于Number-1的时候就不计算距离了,因为Number-1已经是最后一个区域了,没有别的区域能和他计算距离了
*所以使用break跳出循环
if (j == Number-1)
break
endif
*计算点和点之间的距离公式,new_row[j], new_column[j]是第一个点的坐标
distance_pp(new_row[j], new_column[j], new_row[j+1], new_column[j+1], Distance)
*将两个局域的距离放入数组。说明一下在halcon数组只能是1xN的数组,不能数组里面套数组
distance_list[j] := Distance
endfor

halcon数组的一些使用的更多相关文章

  1. Halcon学习(三)赋值与数组操作

    assign : 对数据赋值,对数组的初始化.但不能对数组中的某一个值进行赋值. 举例:Tuple1 := [1,0,3,4,5,6,7,8,9]    // 对数组进行初始化 Val := sin( ...

  2. zw版·Halcon与delphi(兼谈opencv)

    zw版·Halcon与delphi(兼谈opencv) QQ群 247994767(delphi与halcon) <Halcon与delphi>系列,早两年就想写,不过一方面,因为Halc ...

  3. 《zw版·Halcon-delphi系列原创教程》 zw版-Halcon常用函数Top100中文速查手册

    <zw版·Halcon-delphi系列原创教程> zw版-Halcon常用函数Top100中文速查手册 Halcon函数库非常庞大,v11版有1900多个算子(函数). 这个Top版,对 ...

  4. 《zw版·Halcon-delphi系列原创教程》 Halcon分类函数014,tuple,元组

    <zw版·Halcon-delphi系列原创教程> Halcon分类函数014,tuple,元组 为方便阅读,在不影响说明的前提下,笔者对函数进行了简化: :: 用符号“**”,替换:“p ...

  5. halcon算子

    halcon的算子列表   Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样 ...

  6. Halcon编程-基于纹理的mara检测

    表面瑕疵检测是机器视觉领域非常重要的一个应用.机器视觉是集光学.机电和计算机三个领域的一门不算新的技术.但目前表面瑕疵检测在学界主要是计算机专业或者控制专业瞄准图像处理方向在做,而视觉光学系统这一块主 ...

  7. halcon摄像机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

  8. halcon的算子列表

    Chapter 1 :Classification 1.1 Gaussian-Mixture-Models 1.add_sample_class_gmm 功能:把一个训练样本添加到一个高斯混合模型的训 ...

  9. Halcon相机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

随机推荐

  1. 【报错解决】Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.

    项目开发日记-bug多多篇(2) 同时也是 实现一些功能(3) 真的痛苦,写一天代码遇到的bug够我写三天博客. 今天是为了做一个头像功能,具体说是用户上传头像文件并且预览的功能. <div c ...

  2. Go单体服务开发最佳实践

    单体最佳实践的由来 对于很多初创公司来说,业务的早期我们更应该关注于业务价值的交付,并且此时用户体量也很小,QPS 也非常低,我们应该使用更简单的技术架构来加速业务价值的交付,此时单体的优势就体现出来 ...

  3. 【已解决】vscode窗口控制台闪现(不用更改原代码)

    打开launch.json 将"type": "cppdbg"改为"type": "cppvsdbg" 会出现密钥ext ...

  4. elasticSearch 7.6.1 入门及elasticSearch整合springboot

    一.ElasticSearch概述 官网:https://www.elastic.co/cn/downloads/elasticsearch Elaticsearch,简称为es,es是一个开源的高扩 ...

  5. ELF文件结构

    ELF文件结构 ELF文件的全称是Executable and Linkable Format,直译为"可执行可链接格式",包括目标文件(.o).可执行文件(可以直接运行).静态链 ...

  6. mysql的命令二

    1.插入数据 格式一:insert into table_name valuse (字段1,字段2): insert test1 values ('wangsan',22,'male'); 格式二:i ...

  7. 使用RoslynSyntaxTool工具互相转换C#代码与语法树代码

    ​ 项目地址 MatoApps/RoslynSyntaxTool: 此工具能将C#代码,转换成使用语法工厂构造器(SyntaxFactory)生成等效语法树代码 (github.com) 基础概念 S ...

  8. 【系统问题】windows10打印就蓝屏-报错误代码“win32kfull.sys”

    现象描述: 打印机一打印电脑就蓝屏,蓝屏错误代码为:win32kfull.sys 原因分析: 2021年3月9日-推送了KB5000802补丁更新(操作系统内部版本19041.867和19042.86 ...

  9. 主管发话:一周搞不定用友U8 ERP跨业务数据分析,明天就可以“毕业”了

    随着月末来临,又到了汇报总结的时刻. (图片来自网络) 到了这个特殊时期,你的老板就一定想要查看企业整体的运转情况.销售业绩.客户实况分析.客户活跃度.Top10 sales. 产品情况.订单处理情况 ...

  10. 使用git提交和拉取gitee的代码

    使用git提交和拉取gitee的代码 1. 安装Git(自行摸索) 2. 在gitee新建仓库 名称和路径自己写 这两个二选一足矣 默认分支master就行 复制这个链接,待会要用 3. 新建项目目录 ...