0

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

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

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

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

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

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

2 回答 2

3

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

在此处输入图像描述

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”中的孔数产生以下输出

在此处输入图像描述

于 2020-07-09T20:04:27.327 回答
0

您可以使用以下方法提取红色区域的“holes_num”特征:

connect_and_holes(myRegion, numConnected, numHoles) 

作为奖励,您可以检查numConnected以测试划分红色区域的孔的状况。

于 2020-09-25T15:24:53.383 回答