导读:开发环境篇之HALCON基础.目录.基本数据分类.图标类数据.Image(图片).Pixel:像素.Channel:通道.Domain:域.图片操作.Region(区域).Region操作.XLD(轮廓).XLD操作.Control(控制类数据).数据监视.数组.Iconic数组
开发环境篇之HALCON基础
目录
Iconic图标类数据:
Control 控制类数据:
数组:
Iconic数组(Objects)
最小索引为1,最大索引为数组长度
Control数组(Control Tuple)
最小索引为0,最大索引为数组长度-1
长度是1时,可作为1个变量使用
Vector数组,可包含Iconic数据和Iconic数组,或Control数据和Control数组
字典Dictionary
一张图讲清楚3种Iconic数据:
一张图讲清楚图片的3种概念:
在HALCON中,像素可以是不同的数据类型,用来表示各种不同信息。
一张彩色图片由3个通道组成:
多光谱图片,可多达6个通道:
域可理解为ROI(感兴趣区域),大部分算子只会处理包含在域内的像素(不是所有算子):
图片的默认域是整个图片区域:
域可以裁剪:
图片的读写
read_image(Image,'patras')
write_image(Image,'png',0,'C:/TEMP/MyImage')
注:可以是图片完整路径,如果仅仅是文件名则路径为$HALCONIMAGES/patras.png ,保存文件时必须确保目标文件夹存在。
获取图片的属性:
get_image_type(Image,Type)
get_image_size(Image,ImageWidth,ImageHeight)
访问图片的通道:
count_channels(Image,NumChannels)
access_channel(Image,ImageRed,1)
access_channel(Image,ImageGreen,2)
access_channel(Image,ImageBlue,3)
查看图片灰度直方图:
HALCON有自带的工具,参考Halcon工具之灰度直方图。
访问和设置像素灰度:
get_grayval(Image,130,145,Grayval)
set_grayval(Image,130,145,[0,10,20])
查看图片的域:
默认域是整个图片
get_domain(Image,RegionDomain)
修改图片域:
reduce_domain 设置的域只能是原有域的子区域
gen_circle(RegionCircle,200,200,200.5)
reduce_domain(Image,RegionCircle,ImageReduced)
change_domain 设置的域可以大于原有域
gen_circle(RegionCircle,200,200,200.5)
reduce_domain(ImageReduced,RegionCircle,ImageReduced2)
Region的多种形态:
Region的作用:
对象分割(blob分析)
用作图片域(Domain)
只处理域内像素
可缩短运算时间
用来寻找特征
Region的特点:
生成Region:
gen_circle(RegionCircle,200,200,100.5)
gen_rectangle1(RegionRect1,30,20,100,200)
gen_rectangle2(RegionRect2,300,200,rad(-30),100,20)
访问Region:
get_region_points(RegionRect1,RowsRect1,ColumnsRect1)
get_region_runs(RegionRect1,RunsRow,RunsColumnBegin,RunsColumnEnd)
area_center(RegionRect1,AreaRect1,_,_)
XLD(eXtended Line Description 轮廓)的特点:
XLD生成:
read_image(Image,'fabrik')
gen_contour_polygon_xld(Contour,[0,333],[0,222])
获取轮廓点:
get_contour_xld(Contour,Rows,Columns)
gen_cross_contour_xld(Cross,Rows,Columns,32,rad(45))
Integer(整形,Booleans,TYPE):
Real(浮点数Double):
String(字符数组)
HALCON18.11之前:
HALCON18.11开始:
Handle(句柄):
_注:tuple_type_elem 算子可以返回元组元素的类型,具体类型值参考算子手册。_
handle目标数据结构,内部数据查看:
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
函数绘图:
X:=[0:359]
Y:=sin(rad(X))
支持将Image、Region、XLD放入同个数组,要通过调用函数生成、插入和访问 :
Objects的生成和插入
gen_empty_obj(EmptyObject) concat_obj(EmptyObject,Image,MyObjects) concat_obj(MyObjects,Region,MyObjects) concat_obj(MyObjects,XldEdges,MyObjects)
可直接读取多张图片,自动生成Objects
read_image(Image,‘printer_chip/printer_chip_0’+[1,2,3,4]) count_obj(Images,NumberImages)
Objects成员访问
select_obj(Images,Image1,1) select_obj(Images,Image3,3)
支持将Integer、Real、String变量放入同个数组,通过代码行直接操作:
Tuple的生成和插入
A:=[1,2,‘string’,3.14] A[4]=444 A[5]=555
Tuple成员的访问
TpData:=A[index]
Iconic、Control类数据或者数组不支持放在同个容器,支持嵌套(vector内可包含vector),不能作为参数被算子调用 :
Vector的生成和插入
Vector成员的访问
VcData:=Vc.at(index)
Vector跟Tuple的区别:
Vector是一个类,Tuple则是普通数组
获取数组长度:Vc.length() tuple_length(Tp)
访问数组成员:Vc.at(index) Tp[index]
Vector支持Iconic数据,Tuple只支持Control数据
Vector不可作为参数被算子调用,Tuple可以
Vector和Tuple可以互相转换
convert_tuple_to_vector_1d convert_vector_to_tuple
字典的特点:
键、值 存储方式
单个容器内,可以存储任意Iconic和Control数据和数组
越来越多地作为算子调用的参数
create_dict(InputFileDict1) set_dict_tuple(InputFileDict1,‘image_file’,ImageFile) set_dict_object(Image,InputFileDict1,‘image’)
上一篇:重磅更新!Sermant 1.2
下一篇:界面重建——Marching c