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

使用python检查opencv中的轮廓区域,python,opencv,Python,Opencv,我尝试在新的python api(cv2)中使用checkContour()函数,如果我使用FindOntour创建要检查的轮廓,例如 contours, hierarchy = cv2.findContours(imgGray, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE) cv2.contourArea(contours[0]) 但是,当我自己创建轮廓时,下面的代码不起作用 contour = numpy.array([[0,0], [10,0], [10

我尝试在新的python api(cv2)中使用checkContour()函数,如果我使用FindOntour创建要检查的轮廓,例如

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)
并在函数轮廓区域中返回“error:(-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);
矢量轮廓;
轮廓。推回(点2f(0,0));
等高线。推回(点2F(10,0));
轮廓。推回(点2F(10,10));
等高线。推回(点2F(5,4));
双面积0=轮廓面积(轮廓);
使用最新的python API(2.3)?

这一个应该可以:

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

谢谢这是用于从浮点元组坐标列表计算面积的mad one liner:
area=cv2.contourArea(np.around(np.array([[pt]表示浮点元组中的pt]))。aType(np.int32))