read_image(Image, 'C:/Users/86173/Desktop/test/4.png')
get_image_size(Image, Width, Height)
dev_close_window()
dev_open_window(0, 0, Width, Height, 'black', WindowHandle)
dev_display(Image)
rgb1_to_gray(Image, GrayImage)
gray := 88
threshold(GrayImage, Region, gray, 255) //全局阈值
binary_threshold(GrayImage, Region1, 'max_separability', 'dark', UsedThreshold) //将灰度图像转换为二值图像的函数
mean_image(GrayImage, ImageMean, 15, 15) //均值滤波(计算图像像素值的平均值的函数)
dyn_threshold(GrayImage, ImageMean, RegionDynThresh, 5, 'light') //动态阈值(根据局部图像信息动态计算阈值的函数。它使用自适应算法来确定每个像素的最佳阈值,从而创建更准确和鲁棒的二值图像)
connection(RegionDynThresh, ConnectedRegions)
select_shape(ConnectedRegions, SelectedRegions, 'area', 'and', 1500, 99999)
select_shape(SelectedRegions, SelectedRegions1, 'area', 'and', 1500, 3000)
difference(SelectedRegions, SelectedRegions1, RegionDifference)//区域减法
gen_circle(Circle, 200, 200, 100.5) //绘制圆形
gen_circle(Circle1, 200, 200, 150.5)
difference(Circle1, Circle1, RegionDifference1)
fill_up(RegionDifference, RegionFillUp)
select_shape(RegionFillUp, SelectedRegions1, 'rectangularity', 'and', 0.9, 1)
select_shape(SelectedRegions1, SelectedRegions2, 'area', 'and', 13000, 20000)
shape_trans(SelectedRegions2, RegionTrans, 'convex')
draw_region(Region, WindowHandle)
shape_trans(Region, RegionTrans1, 'convex')
difference(RegionTrans1, Region, RegionDifference2)
skeleton(SelectedRegions, Skeleton) //生成一个像素点宽度的骨架
dev_display(Region) //在 HALCON 图形窗口中显示图像、区域和 XLD 轮廓
dilation_circle(Region, RegionDilation, 3.5) //用直径3.5的圆形进行膨胀
erosion_circle(Region,RegionErosion,3.5) //用直径3.5的圆形进收缩
difference(RegionDilation, RegionErosion, RegionDifference3) //膨胀减去收缩
closing_circle(RegionDifference3, RegionClosing, 3.5) //先膨胀再收缩
*opening_circle(RegionClosing, RegionOpening, 3.5)//先收缩再膨胀
boundary(RegionClosing, RegionBorder, 'inner') //描边函数
HalconLen7-形态学操作
于 2024-04-23 10:00:22 首次发布