使用cv MinMaxLoc()识别白色区域

时间:2012-11-22 10:32:16

标签: opencv

我的应用程序将处理我从相机获取的12位二进制图像。下面以jpeg显示相同的图像。

任务是识别每个白色发光区域 这4个区域作为一堆随机出现在每个图像中。 可以假设4个白色区域总是从一个图像移动到另一个图像。 与黑色或近黑色背景相比,每个点将具有非常高的强度。每个点实际上不是单个像素,而是14 x 14 ROI。 此外,图像的高度为200像素 每个白色区域之间的距离始终是固定的。

如果我申请CVMinMaxLoc();我将只获得一个最亮的位置。

如何识别每个地区?

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以做的是:

  1. 使用threshold()获取黑白图像,每个白色区域至少有一个白点。

  2. 在阈值图像上:应用minMaxLoc()获取第一个白色区域,然后使用floodFill()通过将其涂成黑色来消除该白色区域。

  3. 重复步骤2,直到获得所有白色区域。 (你会发现每个白色连接组件一次,因为你画了每个黑色。)

  4. 如果您在threshold()后未连接白色区域,则可以使用dilate()将其连接起来。

    如果您想检测白色区域的中心,您也可以在步骤1之后使用erode()