使用 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 数组的主要内容,如果未能解决你的问题,请参考以下文章
使用python将opencv图像通过管道传输到ffmpeg
Python - 使用 OpenCV 将字节图像转换为 NumPy 数组