鉴于其中有一个小数(1-3)斑点的阈值图像,我想选择最接近中心的斑点,我希望它是一个数字:
我想将红色矩形提取为单独的Mat,因为它最接近中心(绿点)。我的第一个想法是迭代图像中的所有斑点,并从像素到像中心以像素为单位拍摄距离最小的斑点。但是,我不熟悉绝大多数OpenCV函数(并且有很多函数!)所以我想知道是否有更好的方法。
我已经看到了一些问题,但是:
答案 0 :(得分:2)
答案 1 :(得分:1)
在您的示例图像中,质心将无法工作,因为其他区域的质心比6的质心更接近图像中心。相反,您应该查找包含与图像中心最近的像素的区域。
我会把它分解为:
Mat
界面访问该图像。如果这还不够好,你可以查看某种加权质心,其中靠近图像中心的像素具有更高的权重。
答案 2 :(得分:0)
没有OpenCV函数可以找到质心最接近特定点的blob。无论如何,对于1-3个blob,循环遍历所有这些将是一个快速的操作。
答案 3 :(得分:0)
答案 4 :(得分:0)
您可以使用包含孔的区域的findContour / drawContour提取连接的组件并计算标签图像。文档that do exactly that中有一个代码示例,但如果速度有问题,您可以实现专用方法。
要找到最接近图像中心的CC,您不应该依赖于质心,因为您的区域具有复杂的形状。您可以从中心开始逐渐扫描标签图像,并查看首先落在哪个连接组件上。
答案 5 :(得分:0)