一、读取图片read_image (Image1, 'Image13.bmp')注意路径要和halcon在一个文件目录下,或者填写绝对路径。
read_image (Image2, 'Image14.bmp')
在我们编写halcon程序中可能常会用到图像相减算子sub_image,例如在做高斯高通滤波的时候,最后的结果是要用原图像减去滤波后的图像才能得到锐化图像。该算子的参数形式如下:
二、sub_image (Image2, Image1, ImageSub, 1,0)图形相减算子
第一个参数是被减图像,第二个参数是减数图像,第三个参数是结果图像,第四个参数是乘数因子,第五个参数是灰度补充值.
三、threshold(Image : Region : MinGray, MaxGray : )二值化阈值处理(层层筛选,精准定位)
threshold (ImageSub, Region, 120, 255)
- Image是输入图像
- Region是分割后的结果
- MinGray 和MaxGray是输入的控制参数,分割的最小灰度值与最大灰度值
四、connection(Region, ConnectedRegions)打散区域(二值化处理后必须打散)
connection算子一般就两个参数,参数Region表示需要计算的输入图像区域,参数ConnectedRegions表示输出图像区域。
五、intensity (ConnectedRegions, ImageSub, Mean, Deviation)
计算灰度值的平均值和偏差。
六、数组里元素的个数 tuple_length (Mean, Length)
七、dev_display — 在当前图形窗口中显示图像对象。
dev_display(ImageSub)
八、select_obj (ConnectedRegions, ObjectSelected, idx+1)
九、area_center (ObjectSelected, Area, Row, Column) 求区域中心
十、dev_display(Image2) 展示图像
dev_display 在活动图形窗口中显示图标对象(图像、区域或 XLD)。 这相当于双击变量窗口内的图标变量。
十一、gen_cross_contour_xld (Cross, Row, Column, 32, 0) 为每个输入点生成一个十字形状的XLD轮廓
参数:
Cross (output_object):生成XLD轮廓。
Row (input_control):输入点的行坐标。
Col (input_control):输入点的列坐标。
Size (input_control):十字的长度。
Angle(input_control):十字的方向。
总结:
read_image (Image1, 'Image94.bmp')
read_image (Image2, 'Image95.bmp')
sub_image (Image2, Image1, ImageSub, 1,0)
threshold (ImageSub, Region, 120, 255)
connection (Region, ConnectedRegions)
intensity (ConnectedRegions, ImageSub, Mean, Deviation)
idx := 1
maxValue := -1
tuple_length (Mean, Length)
for i := 0 to Length-1 by 1
if (Mean[i] > maxValue)
maxValue := Mean[i]
idx := i
endif
endfor
dev_display(ImageSub)
select_obj (ConnectedRegions, ObjectSelected, idx+1)
area_center (ObjectSelected, Area, Row, Column)
dev_display(Image2)
gen_cross_contour_xld (Cross, Row, Column, 32, 0)