Halcon就是一门编程语言
软件使用
界面介绍

快捷菜单

视图窗口
变量窗口:(类型)图像变量窗口和控制变量窗口。
算子窗口:halcon用到的函数、方法统称为算子。 视觉软件中调什么函数一般就是算子。
程序窗口:类似编程用的窗口。
内部案例如何调:Ctrl+E (浏览的开发实例程序,在实例程序里有非常多分类和方法。


可以调用里面算子。
F5–运行

正常运行时会把所有运行结果叠加到一起。
灰度值如何看

灰度值 (鼠标在图形窗口移动时,灰度值和行及列都会发生变化)
坐标系 R–行 C–列
按ctrl(上面坐标系表示,下面灰度值,上面坐标系)

不小心关没了 选择停靠图像窗口

图像变量窗口恢复

ROI窗口打开(用来绘制ROI目标区域)

想让图像恢复正常点适应窗口。
放大用鼠标滚轮或放大镜 箭头模式下只能放大不能移动 想移动按手可以拖动图像。
Halcon案例位置通过环境变量找
安装目录:
电脑搜环境变量–编辑环境变量(这里不需删除不需动)
双击它复制地址

想变成高手多看源码,通过环境变量找

可以看案例存储目录(Halcon联合XX编辑)
都在H-Develop目录下可以看到以前编辑的
编程讲解
H-Develop(Halcon开发工具库/Halcon编程语言)
code目录–专门用来放代码

主程序里去编写代码

halcon里面注释 “ * ”
不知道的话全选点注销

调用算子后点F6
下面是调用算子,左边图像变量是变量。
变量:
i定义的值叫变量(可以根据用户的需求来)–严格按照强类型方式来定义

图像变量:
三种方式:图像、轮廓、区域(统称图像变量)
默认图像为3,会找到这张图 必须写名称-规范写法
参数:使用算子需要提供的数据及返回的结果。 halcon底层:C语言
如何看输入输出

选中算子对应右键–打开算子所在窗口,算子所对应窗口打开。 如果还没找到点算子选择帮助(跳到算子帮助文档里面来会提供很多算子使用案例)

获取图像区域:代表区域某个变量。 (用二值化可以提取区域出来)
通过算子提取灰度值范围区域![]()
轮廓


类型:轮廓类型(叫XLD类型–就是轮廓)
图像变量会把对应变量放窗口中。控制变量放到控制变量窗口中。
轮廓三种提取模式:边框、中心、边框孔洞。
定义字符串用单引号,定义控制变量放控制窗口中。
Halcon变量提取:图像、区域、轮廓、字符串、数字
变量搞清楚后才能学习halcon语法。
halcon语法:分支判断、循环、数组(元祖)和字典 运用。![]()
被筛选出来内容就是区域
凡是不等于0都为真(和C语言一样)
![]()
halcon中这个颜色被称为定义函数
这个颜色为内部自带算子
通过这些遍历设置额外参数。
短路判断:一旦上面成立下面就不走了
句柄![]()
三种组合方式:if end if else if name (可以嵌套很多else if)
光标自动定位:点哪个或修改哪个就定位哪个。
选择结构:switch..case 根据用户选择去执行对应情况(不是根据范围去处理就是根据结果去选择)
Halcon看帮助文档,底层就是C语言。
循环:处理的数据逻辑都一样,如果不用训练就重复写的,用循环就写一次。
写多了就用对了,不需要刻意去记忆单词。
软件安装+内容练习
坐标类型就是整数,string字符串类型
* 介绍Halcon编程中基础内容
* 什么变量,可以变化量,怎么定义变量
i := 1 // 控制变量i赋值为1
i := 11
name := 'gerry'
** 什么是图像变量 图像,轮廓,区域
** 参数: 使用算子需要提供的数据及返回的结果
** int Method1(…..)
read_image (Image, './3.bmp') // image图像变量
** 获取图像图区域
threshold (Image, Region, 128, 255) // Region 图像变量
** 通区域转换为轮廓
gen_contour_region_xld (Region, Contours, 'border') // XLD => Contours 图像变量
*** 学习Halcon的语法:
** 1、 分支判断[非零数为真,0为假]
** 第一种
dev_clear_window ()
if (1)
dev_disp_text ('判断为真', 'window', 20, 20, 'yellow', ['box'], ['false']) // 显示文本到窗口
endif
** 第二种
name:='zhangsan'
dev_clear_window ()
if (name=='zhangsan')
dev_disp_text ('名称张三', 'window', 20, 20, 'yellow', ['box'], ['false'])
else
dev_disp_text ('名称不是张三', 'window', 20, 20, 'yellow', ['box'], ['false'])
endif
** 第三种
j:=2
** 必须获取窗口句柄
dev_clear_window ()
if (j == 1)
dev_disp_text ('J==1', 'window', 20, 20, 'yellow', ['box'], ['false'])
elseif( j > 0)
dev_disp_text ('j > 0', 'window', 20, 20, 'yellow', ['box'], ['false'])
elseif( j > 0)
dev_disp_text ('j > 0', 'window', 20, 20, 'yellow', ['box'], ['false'])
elseif( j > 0)
dev_disp_text ('j > 0', 'window', 20, 20, 'yellow', ['box'], ['false'])
else
dev_disp_text ('j < 0', 'window', 20, 20, 'yellow', ['box'], ['false'])
endif
** 选择结构:switch….case
dev_clear_window ()
selected := 2
switch (selected)
case 1:
case 3:
case 5:
dev_disp_text ('选择了1号', 'window', 20, 20, 'yellow', ['box'], ['false'])
break
case 2:
dev_disp_text ('选择了2号', 'window', 20, 20, 'yellow', ['box'], ['false'])
break
case 6:
dev_disp_text ('选择了3号', 'window', 20, 20, 'yellow', ['box'], ['false'])
break
default:
dev_disp_text ('选择不存在', 'window', 20, 20, 'yellow', ['box'], ['false'])
endswitch
** 2、 循环【处理的数据逻辑都一样,如果不用训练就重复写的,用循环就写一次】
k :=1
dev_clear_window ()
while(k<=9)
dev_disp_text ('i='+k, 'window', 20, 20*k, 'yellow', ['box'], ['false'])
k := k + 1
endwhile
** for(int i = 1; i <= 9; i+=1)
dev_clear_window ()
for i:=1 to 9 by 1
dev_disp_text ('i='+i, 'window', 20, 20*i, 'yellow', ['box'], ['false'])
endfor
** 3、 数组(元祖)、字典
**** 1
Array1 := [1,2,3,4,5]
Array1[10] := 100
**** 2 数组初始化
A[1,4,6] := 100
**** 3 初始化连续数字
B := [5:10]
**** 4 初始化步长为3的连续元素
D :=[2:3:19]
** 初始化字典 [k,v]
create_dict (Dict)
Dict := dict{} // 初始化一个字典
set_dict_tuple (Dict, 'simple_integer', 27)
set_dict_tuple (Dict, 'simple_string', 'Hello world')
set_dict_tuple (Dict, 'mixed_tuple', ['The answer', 42])
set_dict_tuple (Dict, 0, 'This is zero')
** 取值
get_dict_tuple (Dict, 'simple_string', Res)
** 判断key是否存在
get_dict_param (Dict, 'key_exists', [9], GenParamValue)
Halcon一般情况下点XL的,弹出对话框要关闭。
安装破解版:对2025可能会出现问题。
安装不同版本的用切换助手。
网慢安装不要用加速器(库和库之间出现问题)
联合编程:当前使用的哪个版本切过去就行了
不要点击自动检测 环境变量
网硕互联帮助中心








评论前必须登录!
注册