使用 Python 将 OpenCV BoundingRect 转换为 NumPy 数组

Posted

技术标签:

【中文标题】使用 Python 将 OpenCV BoundingRect 转换为 NumPy 数组【英文标题】:Converting OpenCV BoundingRect into NumPy array with Python 【发布时间】:2012-07-09 14:14:51 【问题描述】:

在 OpenCV 中,调用 cv2.findContours 后,我得到了一个轮廓数组。

contours, hierarchy = cv2.findContours(image, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

我想使用 cv2.boundingRect 给我一个定义轮廓的矩形,因为轮廓可能很复杂。

for contour in contours:
   boundRect = cv2.boundingRect(contour)

但是,这给了我一个 BoundingRect 对象,其形式为 (x, y, width, height)。有没有一种标准的方法可以将它转换为标准的 NumPy 数组,并且已经提供了一个辅助函数,还是我需要手动构造它?

【问题讨论】:

【参考方案1】:

是的,您必须手动构建这样的数组。

可能,你可以这样做:

>>> a = np.empty((0,4))
>>> for con in cont:
        rect = np.array(cv2.boundingRect(con)).reshape(1,4)
        a = np.append(a,rect,0)

就我而言,最终的a 的形状为(166,4)

或者您可以使用任何 Numpy 方法来执行此操作。

【讨论】:

以上是关于使用 Python 将 OpenCV BoundingRect 转换为 NumPy 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用opencv将图像转换为Python中的矩阵

使用python将opencv图像通过管道传输到ffmpeg

Python - 使用 OpenCV 将字节图像转换为 NumPy 数组

将 python 行翻译成 c++ opencv

Python + OpenCV - 将图像复制到某个目录[重复]

opencv python将图像读取为RGB