用python检查opencv中的轮廓区域

2024-05-20 04:39:11 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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 f | contour.depth()==CV s”

当我换成

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);

在最新的PythonAPI(2.3)中工作?


Tags: 函数代码numpypythonapibackarraycv2push