Halcon算子格式 常见转换算子 保留小数 元素个数获取 循环与条件分支
  Uxc9ApR8SClW 2023年11月02日 51 0

2.1什么是算子?

算子就是由Halcon开发团队对图像处理的算法进行封装为方法由我们使用,作用就是对图像数据进行处理

2.2算子的格式?

算子名称(图像输入参数,图像输出参数,控制输入参数,控制输出参数)

算子结构中的四种参数被三个冒号分割开,一个算子中可能这四种参数不会都存在,但是参数的次序不会变化,算子中输入参数不会被修改,只会被算子使用,算子只能修改输出的参数。


这个算子在被调用时需要输入一个图像参数和两个控制参数才能输出一个图像参数。
Halcon中每条算子都有相对应的颜色,点击菜单栏中的编辑->参数选择->程序窗口查看算子的颜色如下:

Halcon算子格式 常见转换算子 保留小数 元素个数获取 循环与条件分支_初始化

2.3 Halcon转换相关算子

       弧度转角度:tuple_deg

              算子:tuple_deg( : : Rad : Deg)

              示例:tuple_deg (Phi5, Deg)

                     Phi5(输入控制参数):输入弧度

                     Deg(输出控制参数):输出角度

角度转弧度:tuple_rad

              算子:tuple_rad( : : Deg : Rad)

              示例:tuple_rad (Deg, Rad)

              Deg(输入控制参数):输入角度

Rad(输出控制参数):输出弧度

 

2.4 Halcon 数据类型

       资料扩展:https://www.bbsmax.com/A/xl56GOg4dr/

      HTuple类型:

1.    既可以表示的类型有int,double、float、string,既可以表示单个值;

2.    可以是容器;

3.    可以是数组,数组遍历时需要有下标,如:变量名称[下标]


字符串表示:tuple:='扩视机器视觉'

              Tuple:表示变量,自定义名称

              “:=“:为赋值符号,将右边的值赋值给左边变量

              '扩视机器视觉':字符串需要用英文的单引号引起来表示

 

字符数组表示:tuple1:=['扩视','机器','视觉']

'扩视','机器','视觉':多个字符串组成字符串数组,需要用顿号隔开,并且每个字符串需要用单引号引起来

·       注意:数组中每个元素的索引是从0开始的

·        

str:=tuple1[0]结果为:'扩视'

数组表示:nums:=[1,2,3,4,5,6,7,8,9]

              [1,2,3,4,5,6,7,8,9]:数字用顿号隔开即可

 

索引数组:n:=nums[0]

              得出结果为:1


boolean为布尔类型,它的值就两个,要么是真True 要么是假False,一般用布尔值作为判断条件判断

       示例:

n:=11    //初始化n值

if (n>10)  //判断如果n>10就显示信息否则就不显示信息 n>10结果为True

 disp_message (200000, n, 'window', 12, 12, 'black', 'true')

endif

结果显示信息为11

 

2.5 小数点保留 转string

              小数保留位数后转字符串tuple_string

算子:tuple_string( : : TFormat : String)

示例:tuple_string (num10, '.2f', String)

num10(输入控制参数1):输入数值

'.2f'(输入控制参数2):输入保留几位小数 2f两位 3f三位…

String(输出控制参数):输出保留小数字符串

2.6 求元素个数

             Num:=|Tuple|//求元素个数

 

2.7 合并元素数据

             Uni:=[Tuple1,Tuple2]//合并  元素数据

 

2.8 循环

While循环:只要满足条件就一直循环

       示例:

b:=0    //初始化值

while (n>10) //判断如果条件成立就一直执行 里面的语句 

    b:=b+1  //b加1后重新赋值给b   

    **等待

    wait_seconds (1)

endwhile

For循环:

       示例:

f:=0   //初始化值

for Index3 := 0 to 10 by 1    //Index3初始值为0需要加到10就退出循环 每执行一次循环Index3加1

        f:=f+1  //f加1后重新赋值给b    执行的语句

    **等待

    wait_seconds (1)

endfor

 

2.9 条件判断

If  Elseif 条件判断:

       示例:

n1:=[11 ,20]    //初始化n值

if (n1[0]>15)    //判断如果n1 0索引的元素值>15就显示信息

    disp_message (200000, n1[0], 'window', 12, 12, 'black', 'true') //执行的语句

elseif (n1[1]>15) //判断如果n1 1索引的元素值>15就显示信息

    disp_message (200000, n1[1], 'window', 12, 12, 'black', 'true') //执行的语句

endif

2.10 跳出循环break和continue

       Break当循环执行到break时 整个循环停止结束

示例:

       f:=0   //初始化值

for Index3 := 0 to 10 by 1    //Index3初始值为0需要加到10就退出循环 每执行一次循环Index3加1

f:=f+1  //f加1后重新赋值给b    执行的语句

if (f==3)

break //跳出循环

endif

disp_message (200000, f, 'window', 12, 12, 'black', 'true')

**等待

wait_seconds (1)

endfor

continue:跳出本次循环  不执行下面语句 重新继续新的循环

              示例:

f:=0   //初始化值

for Index3 := 0 to 10 by 1    //Index3初始值为0需要加到10就退出循环 每执行一次循环Index3加1

f:=f+1  //f加1后重新赋值给b    执行的语句

if (f==3)

     continue//跳出本次循环  不执行下面语句 重新继续新的循环

endif

disp_message (200000, f, 'window', 12, 12, 'black', 'true')

**等待

wait_seconds (1)

endfor

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  JBfJ5LpBD0AJ   2023年11月13日   23   0   0 初始化链表#define
  JDh7sMsPQI0Y   2023年11月13日   25   0   0 jsonSystem字符串
Uxc9ApR8SClW