我的应用程序将处理我从相机获取的12位二进制图像。下面以jpeg显示相同的图像。
任务是识别每个白色发光区域 这4个区域作为一堆随机出现在每个图像中。 可以假设4个白色区域总是从一个图像移动到另一个图像。 与黑色或近黑色背景相比,每个点将具有非常高的强度。每个点实际上不是单个像素,而是14 x 14 ROI。 此外,图像的高度为200像素 每个白色区域之间的距离始终是固定的。
如果我申请CVMinMaxLoc();我将只获得一个最亮的位置。
如何识别每个地区?
答案 0 :(得分:1)
您可以做的是:
使用threshold()
获取黑白图像,每个白色区域至少有一个白点。
在阈值图像上:应用minMaxLoc()
获取第一个白色区域,然后使用floodFill()
通过将其涂成黑色来消除该白色区域。
重复步骤2,直到获得所有白色区域。 (你会发现每个白色连接组件一次,因为你画了每个黑色。)
如果您在threshold()
后未连接白色区域,则可以使用dilate()
将其连接起来。
如果您想检测白色区域的中心,您也可以在步骤1之后使用erode()
。