使用python检查opencv中的轮廓区域

时间:2011-12-03 17:34:27

标签: python opencv

我尝试在新的python api(cv2)中使用checkContour()函数,如果我创建要使用findContours检查的轮廓, do 就可以工作,例如。

contours, hierarchy = cv2.findContours(imgGray, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cv2.contourArea(contours[0])

然而,当我自己创建轮廓时,以下代码不起作用

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]])
area = cv2.contourArea(contour)

并在函数contourArea中返回“错误:(-215)contour.checkVector(2)> = 0&&(contour.depth()== CV_32F || contour.depth()== CV_32S)

当我改为

contour = numpy.array([[0,0], [10,0], [10,10], [5,4]], dtype=numpy.int32)

我得到了“错误:( - 210)由于函数cvPointSeqFromMat中的元素类型不合适,矩阵无法转换为点序列”

如何使用文档

在C ++中创建以下代码
vector<Point> contour;
contour.push_back(Point2f(0, 0));
contour.push_back(Point2f(10, 0));
contour.push_back(Point2f(10, 10));
contour.push_back(Point2f(5, 4));

double area0 = contourArea(contour);

使用最新的python API(2.3)?

1 个答案:

答案 0 :(得分:13)

这个应该有效:

contour = numpy.array([[[0,0]], [[10,0]], [[10,10]], [[5,4]]])
area = cv2.contourArea(contour)