Python中Opencv检测梯形、菱形、正方形、四边形、平行四边形

2024-10-03 13:18:49 发布

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

我编写了这样的代码来检测png图像中的形状。我得到了正确的输出,用于检测正方形和矩形,但对于其他形状,如梯形、菱形、四边形和平行四边形,我无法正确检测。检测这些不同类型多边形的正确代码是什么

_,thrash=cv2.threshold(imgGray,240,255,cv2.THRESH_BINARY)

contours,_=cv2.findContours(thrash,cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

for contour in contours:

    approx=cv2.approxPolyDP(contour,0.01*cv2.arcLength(contour,True),True)

    cv2.drawContours(img,[approx],0,(0,0,0),5)

    x=approx.ravel()[0]

    y=approx.ravel()[1]

    if len(approx)==4:

        x1,y1,w,h=cv2.boundingRect(approx)

        aspectRatio=float(w)/h

        print(aspectRatio)

        if aspectRatio>=0.95 and aspectRatio<=1.05:

            cv2.putText(img,"Square",(x,y),cv2.FONT_HERSHEY_COMPLEX,0.5,(0,0,0))

        else:

            cv2.putText(img,"Rectangle",(x,y),cv2.FONT_HERSHEY_COMPLEX,0.5,(0,0,0))

Tags: 代码trueimgifcv2contour形状font