首页 > 解决方案 > Halcon - 计算孔数

问题描述

我有一个区域,在图像的 H 通道上使用阈值创建。现在我有一个新的区域,并减少了它的域以获得一个新的图像。

在这个新图像上,我需要数孔。我所说的孔是指没有像素的区域。

例如,如果我有一个上面有蓝色方块的红色板,然后选择红色,我会得到一个新的图像,在蓝色方块所在的地方填充有方孔。

我怎样才能得到那些洞的数量?

我已经这样做了,但必须有更好的方法:

threshold(ImageHGreenReduced, RegionHGreenReduced, 0 ,255)
connect_and_holes(RegionHGreenReduced, NumConnected, NumberCrateWindows)

标签: counthalcon

解决方案


你这样做的方式对我来说看起来很简单。这是一个轻微的变化。给定输入图像:

在此处输入图像描述

read_image(Image, './red_board_blue_squares.png')

access_channel(Image, ImageRed, 1)

threshold(ImageRed, ImageRedRegion, 0, 100)

connection(ImageRedRegion, ImageRedConnectedRegions)

count_obj(ImageRedConnectedRegions, NumberOfHoles)

Message := 'Found ' + NumberOfHoles$'d' + ' holes'
dev_disp_text (Message, 'window', 12, 12, \
               'black', [], [])

使用变量“NumberOfHoles”中的孔数产生以下输出

在此处输入图像描述


推荐阅读