1*读取图片算子
*Image 输出参数 读取图片之后 把图片赋值给image这个变量
*'printer_chip/printer_chip_01'相对路径
read_image (Image, 'printer_chip/printer_chip_01')
2*阈值分割(blobopen_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'printer_chip/printer_chip_01', 'default', 1, -1, AcqHandle)
grab_image_start (AcqHandle, -1))
*参数1输入图片
*参数2 输出的区域
*参数3和参数4提取的范围
threshold (Image2, Region, 10, 80)
连通区域
*参数1输入参数传入的区域
*参数2 输入参数 分割之后的区域数组
connection (Region, ConnectedRegions)
*筛选合适的区域
*1输入的连通区域
*2输出的分割之后的区域
*3筛选的属性 area:面积
*5、6最小值和最大值
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 99999)
*打开图像采集接口
open_framegrabber ('File', 1, 1, 0, 0, 0, 0, 'default', -1, 'default', -1, 'false', 'printer_chip/printer_chip_01', 'default', 1, -1, AcqHandle)
grab_image_start (AcqHandle, -1)//开始
深度解析
'File', // 采集接口类型:File=从文件读取(不是相机)
1, 1, // 横向/纵向图像部分(默认1=全图)
0, 0, 0, 0, // 图像起始坐标、宽高(默认0=自动)
'default', // 端口
-1, // 图像通道数(-1=自动)
'default', // 采集格式
-1, // 比特深度
'false', // 异步采集
'printer_chip/printer_chip_01', // 图像文件路径/前缀
'default', // 设备参数
1, // 帧率
-1, // 超时时间
AcqHandle // 输出:采集句柄(后续操作的唯一标识)
close_framegrabber (AcqHandle)//关闭
《基础知识》
halcon的数据类型:图形变量,控制变量
*图片变量:图片类型(image),区域(region)轮廓类型,
*控制变量:基本数据类型(整型,浮点类型,字符串类型bool类型),句柄,元组类型
*获取窗口的句柄
dev_get_window (WindowHandle)
*基本数据类型
*:=赋值的方式
a:=100//integer
b:=10.2//number
c:='12'//string
d:=true//布尔值转换成1或者0
*3数组类型
arr:=[]//空数组
arr1:=[1,2,3]//
f:=arr1[0]
arr2:=[1,true,'您好']
arr3:=[0:10]//从0开始到10结束 每次递增1
arr4:=[0:10:100]//从0开始到100结束 每次递增10
arr5:=[0:-10:-100]//从0开始到-100结束 每次递增-10
length:=|arr5|//数组的长度
*4 tuple常用的一些函数
tuple_abs(-10,Abs)//绝对值
tuple_add(3,10,Sum)//求和
tuple_ceil(1.1,Ceil)//向上求整
tuple_floor(1.1,A)//向下求整
tuple_concat(10,'你好',Conact)//合并到一个数组
tuple_remove (Conact, 1, Reduced)//移除指定位置的元素
tuple_is_number (Reduced, IsNumber)//判断数组中的元素是否是数字类型
*运算符号
a1:=10
a1:=a1+30
a1:=a1-10
a1:=a1*10
a1:=a1/9
a1:=a1%9
*流程控制
dev_clear_window()//清空窗体
a2:=90
a3:=9
if(a2#a3)//==相等//#不等 !=不等
*展示文本,展示字符,在窗口上展示,左上展示.黑色的字体
*[属性名],[属性值]预留参数
*shadow_color盒子阴影
dev_disp_text ('hello', 'window', 0, 100, 'black', ['box_color','shadow_color'], ['red','red'])
*参数1 窗体的句柄
*2内容
*3展示窗体上
*4/5坐标
*6颜色
*7/8预留参数
disp_text (WindowHandle, '非常优秀', 'window', 12, 12, 'black', [], [])
*for循环
*从1到5 每次叠加1
sum1:=0
for Index := 1 to 100 by 1
sum1:=sum1+Index
*8 while循环
count:=0
while (1)
count:=count+1
dev_disp_text (count, 'window', 90, 1+count*50, 'black', ['box_color','shadow_color'], ['red','red'])
if (count>10)
break
endif
endwhile
week:=1
*9switch 条件判断
switch(week)
case 1:
dev_disp_text ('周一', 'window', 200, 300, 'black', ['box_color','shadow_color'], ['red','red'])
break
case 2:
dev_disp_text ('周二', 'window', 200, 300, 'black', ['box_color','shadow_color'], ['red','red'])
break
default:
dev_clear_window()
break
endswitch