*halcon基础编程
等号 :=
不等号 #
注释号 *
字符串赋值 str := 'halcon'
等于比较符 if(X=10)
与: if(A>1 and A<30)
或: if(A>1 or A<30)
求反: if(not(A=10))
* 二值化
threshold (Image, Region, 100, 255)4
* 形状变换
shape_trans (Region, RegionTrans, 'rectangle2')
* 抠图
reduce_domain (Image, RegionTrans, ImageReduced)
* 填充图像region
fill_up_shape(Region1, RegionFillUp, 'area', 1, 100)
* 用圆形结构元素打开一个区域。
opening_circle (RegionFillUp, RegionOpening, 15.5)
* 开运算
opening_rectangle1 (RegionFillUp, RegionOpening, 140, 100)
* 面积筛选
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 800, 1100)
* 排序
sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'column')
*计算区域的最小外接圆参数。
smallest_circle (SortedRegions, Row, Column, Radius)
* 彩色图转灰度图
rgb1_to_gray (Image, GrayImage)
# ================================================================================
一.图像分割
1 => 灰度直方图的使用
2 => 阈值分割
threshold (Image, Region, 100, 255) # 二值化
binary_threshold (GrayImage, Region, 'smooth_histo', 'light', UsedThreshold) # 自动阈值分割
dyn_threshold (ImageMean, GrayImage, RegionDynThresh, 25, 'dark') #使用局部阈值分割图像 动态阈值分割 + mean_image
mean_image (GrayImage, ImageMean, 10,10) 平均平滑。图像不均匀用动态
二.区域集合运算及变换
1 => 集合运算
union1 (RegionDynThresh, RegionUnion) # 合并
difference (RegionUnion, RegionUnion, RegionDifference) # 差集 地府润次
intersection (SelectedRegions, ConnectedRegions, RegionIntersection) # 交集
complement # 补集 con p men t
2 => 区域变换
connection (RegionDynThresh, ConnectedRegions) # 打散
fill_up (ConnectedRegions, RegionFillUp) # 填充
shape_trans (RegionFillUp, RegionTrans, 'convex') # 变换区域的形状。
skeleton (RegionTrans, Skeleton) # 骨架
三.形态学 # (fin.hdev, dyn_threshold.hdev, hull.hdev, rim.hdev)
opening (RegionDynThresh, RegionDynThresh, RegionOpening) # 开运算
opening_circle (RegionDynThresh, RegionOpening, 3.5)
closing_circle (RegionDynThresh, RegionClosing, 3.5) # 闭运算
dilation1 (RegionClosing, RegionClosing, RegionDilation, 1) # 膨胀 扩张区。
erosion1 (RegionDilation, RegionDilation, RegionErosion, 1) # 腐蚀
boundary (RegionErosion, RegionBorder, 'inner') # 减少一个区域到它的边界。 分界线,获取边缘
四.特征提取
area_center (RegionDynThresh, Area, Row, Column) # 计算区域的面积和中心。
select_shape (RegionDynThresh, SelectedRegions, 'area', 'and', 150, 99999) # 根据形状特征选择区域。
inner_circle (SelectedRegions, Row1, Column1, Radius) # 区域最大内圆。
smallest_circle (SelectedRegions, Row2, Column2, Radius1) # 计算区域的最小外接圆参数。
orientation_region (SelectedRegions, Phi) # 区域定位。
region_features (SelectedRegions, 'area', Value) # 计算区域的形状特征。
#==========================================玩法======================================================
dilation_circle (Region2, RegionDilation1, 3.5)
erosion_circle (Region2, RegionErosion2, 3.5)
difference (RegionDilation1, RegionErosion2, RegionDifference1)
# 膨胀 收缩 取差集 得出轮廓
# closing 先膨胀在收缩
# opening 先收缩在膨胀
创建圆弧XLD轮廓 gen_circle_contour_xld
select_obj() # 从对象元组中选择指定索引的对象。
write_region() # 保存区域
* 设置文本光标的位置。
set_tposition (WindowHandle, Row3-200, Column3)
write_string()
# ======================================================================================
距离工具
1.点到点 distance_pp 在指定点生成一个十字状的轮廓。gen_cross_contour_xld
2.点到直线 distance_pl
3.点到区域的最长最短 distance_pr
4.直线到区域最长最短 distance_lr (平面度)
5.区域与区域最短 distance_rr
BLOB分析 几何变换(区域的几何变换,仿射变换,运用几何变换定位处理区域)
1.几何变换
1 平移 move_region; 可以做区域位置平移,平移后相减可以得到区域某一边的边缘
2 缩放 zoom_region
3 镜像 mirror_region (height/2) *2
4 倒置 transpose_region;
5 极坐标与笛卡尔坐标互换 polar_trans_region() , polar_trans_region_inv() # 相反的, (circle_barcode)
invert_image() 反转图片 白变黑
2 仿射变换
1 区域的任意变换 affine_trans_region
2 创建二维变换矩阵 hom_mat2d_identity
3 平移 hom_mat2d_translate
4 缩放 hom_mat2d_scale
5 旋转 hom_mat2d_rotate
6 刚性 仿射变换 vector_angle_to_rigid 对象图,区域进行仿射变换
7 扩展图像变换 affine_trans_image
综合例程讲解: ball_seq, check_blister, check_bottle, clip, find_pads , count_pellets
扩展灰度(expand_gray)
填补空白区域之间(取决于灰度或彩色)或分裂重叠区域。
图像取通道(access_channel)
获取一个多通道图像的一个通道;
多通道图像(MultiChannelImage) --- 输出对象(input_object)
输入多通道图像
输出图像(Image) --- 输出对象(output_object)
输出指定的通道图像
通道(Channel) --- 输入元组(input_control)
通道数量,默认值:1;参考值:1,2,3,4,5,6,7,8,9,10,11,12,该值必须1≤Chnnel
区域方向(orientation_region)
区域定位。
区域(Regions) --- 输出对象(input_object)
将要检查的区域(s)。
区域方向弧度(Phi) --- 输出元组(output_control)
区域定位(电弧测量)。