OpenCV 2.x 版本的 Python 绑定使用的某些数据表示与 3.x 中的略有不同。
从现有的代码示例(例如这个答案 https://stackoverflow.com/a/17507192/3962537上),我们可以看到我们可以调用cv2.boundingRect
与返回的轮廓列表的 en 元素cv2.findContours
。让我们看看它是什么样子的:
>>> a = cv2.copyMakeBorder(np.ones((3,3), np.uint8),1,1,1,1,0)
>>> b,c = cv2.findContours(a, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
>>> b[0]
array([[[1, 1]],
[[1, 3]],
[[3, 3]],
[[3, 1]]])
我们可以看到轮廓中的每个点都表示为[[x, y]]
我们有一个清单。
Hence
import numpy as np
import cv2
point1 = [[1,2]]
point2 = [[3,4]]
points = np.array([point1, point2], np.float32)
print cv2.boundingRect(points)
我们得到输出
(1, 2, 3, 3)