如何在OpenCV4中计算轮廓图像的面积?

时间:2020-06-24 16:14:33

标签: python image opencv contour area

我对OpenCV 4中轮廓区域的计算存在疑问。我使用以下代码来计算轮廓区域:

gray2 = cv2.cvtColor(closing, cv2.COLOR_BGR2GRAY)
cnts1,_ = cv2.findContours(gray2, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
de1=cv2.drawContours(closing, cnts1, -1, (0, 0, 255), thickness=1)
ar = cv2.contourArea(cnts1)
#ar = cv2.contourArea(cnts1[0])

当我尝试启动代码时,总是收到错误消息:TypeError: Expected Ptr <cv::UMat> for argument 'contour'。 当我将行ar = cv2.contourArea(cnts1)更改为ar = cv2.contourArea(cnts1[0])时,代码正在运行,但是ar的结果为0。没关系,因为cnts1[0]只是轮廓线的一点。 但是,如何获得图片整个轮廓部分的面积?函数cv2.contourArea()似乎只接受单点作为输入。

我很想念一些东西吗?

预先感谢:)。

欢呼

编辑: 更新了代码以遍历轮廓

gray2 = cv2.cvtColor(closing, cv2.COLOR_BGR2GRAY)
cnts1,_ = cv2.findContours(gray2, cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
de1=cv2.drawContours(closing, cnts1, -1, (0, 0, 255), thickness=1)
                    
r=len(cnts1)
r1=[]

for i in range(1,r):
   ar1 = cv2.contourArea(cnts1[i])
   r1.append(ar1)
print(r1)
ar = cv2.contourArea(cnts1[0])
print(ar) 

输出:

[0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 5678.5]
0.0

图片: enter image description here

0 个答案:

没有答案
相关问题