1.Image
灰度图由一个通道组成
彩色图由多个通道组成
大小相同的矩阵包含各种像素类型的灰度值
常用的图像类型:byte 2的8次方 最大值255
real 2的32次方或64次方3d中计算的多
2.region
像素坐标值的存储方式
类似于游程编码,可用于压缩,例如:a2b3c2代表:aabbbcc
像素点保存
3.xld
亚像素(subpixel)描述集合轮廓的对象
xld在模板匹配/图形校准等方面有着重要的作用
xld有两种:Contours轮廓是一系列的点连接,点之间的距离大约是一个像素;polygons多边形,点之间的距离较大,是用最少的线来描述这个轮廓。
读取图片-二值化-联通-合并成一个区域
read_image (Image2, 'E:/halcon/pictures/2.jpg')
threshold(Image2, Region, 128, 255)
connection(Region,ConnectedRegions)
union1(ConnectedRegions,RegionUnion)
*求交集
gen_circle(Circle1,300,300,100)
gen_circle(Circle2,450,300,130)
intersection(Circle1,Circle2, RegionIntersection)
*difference
gen_circle(Circle1,300,300,100)
gen_circle(Circle2,450,300,130)
difference (Circle1,Circle2, Regiondifference)
*symm_difference
gen_circle(Circle1,300,300,100)
gen_circle(Circle2,450,300,130)
symm_difference (Circle1,Circle2, Regionsymmdifference)
*complement补集
gen_circle(Circle1,300,300,100)
complement (Circle1, Regioncomplement)
*形状转换
gen_rectangle1(Rectangle1, 470.336, 693.703, 829.421, 1003.85)
gen_rectangle2(Rectangle2, 671.336, 858.703,rad(-52.842), 268.421, 138.85)
union2(Rectangle1, Rectangle2, RegionUnion2)
shape_trans(RegionUnion2, RegionTrans, 'convex')
shape_trans(RegionUnion2, RegionTrans1, 'rectangle2') /外接矩形
*筛选
read_image(Image22,'E:/halcon/pictures/44.jpg')
threshold(Image22, Region1, 128, 255)
connection(Region1, ConnectedRegions1)
select_shape(ConnectedRegions1,SelectedRegions, 'area', 'and', 150, 99999)
select_shape(ConnectedRegions1,SelectedRegions1, ['area','column'], 'or', [25000,0], [99999,400]) //多个特征一起筛选 [25000,0]面积的筛选范围,[99999,400]列的筛选范围
4.xld转换
shape_trans_xld (Border, XLDConvex, 'convex')
shape_trans_xld (Border, XLDEllipse, 'ellipse')
shape_trans_xld (Border, XLDOuterCircle, 'outer_circle')
shape_trans_xld (Border, XLDRectangle1, 'rectangle1')
shape_trans_xld (Border, XLDRectangle2, 'rectangle2')
分别对应1-5列
5. select_shape_xld(XLD : SelectedXLD : Features, Operation, Min, Max : )
read_image (Image1, 'E:/halcon/pictures/1.jpg')
edges_color_sub_pix(Image1,Edges, 'canny', 1, 20, 40)
select_shape_xld(Edges, SelectedXLD, 'area', 'and', 150, 99999)
select_shape_xld(Edges,SelectXLD1,['width','height'],'and',[100,200],[140,280])