【发布时间】:2021-01-03 12:09:48
【问题描述】:
我正在尝试在 python 中编写一些简单的代码来生成二进制图像中对象周围的边界矩形,其中可能有 1 个或多个对象。对于单个对象,使用 cv2.boundingRect 或在 2 个对象周围绘制单个矩形很容易实现这一点,但它似乎无法处理多个单独对象的情况。例如看下图:
我想获得 2 个边界框,分别为每个对象定义 x/y/width/height(或 x1/x2/y1/y2)。有谁知道如何做到这一点?谢谢!
【问题讨论】:
-
如何定义一个对象?它必须是特定的形状吗?它是否必须在像素之间具有连接性?我能想到的解决方案有很多,但如果只是 blob,你可以使用 blob 检测器:learnopencv.com/blob-detection-using-opencv-python-c
-
它不必是特定的形状,但它们都将大致为圆形/椭圆形,如上图所示。我认为你是对的,我正在寻找的是 blob。所有单个对象将完全连接。但是由于某种原因,blob 检测器无法处理上面的这张图片。图像由 uint8 0 和 1 的 numpy ndarray 组成,此代码:pixels = cv2.imread(seg, 0)detector = cv2.SimpleBlobDetector_create() keypoints =detector.detect(pixels) 返回一个空的 [] for keypoints
标签: python image opencv python-imaging-library bounding-box