使用opencv查找图像中的所有轮廓

Using opencv to find all contours in an image

谁能帮我找出我的代码中的问题,我试图找到图像中的所有轮廓,然后用灰色边框覆盖它,但它似乎只覆盖了部分轮廓。 '''

image_find_goal = "/absolutePathWays.img"
kernel = np.ones((5,5),np.uint8)
#findGoal(image_find_goal)
img1 = cv.imread(image_find_goal,cv.IMREAD_GRAYSCALE)
ret,mask = cv.threshold(img1, 125, 255, cv.THRESH_BINARY_INV)
contours, hierarchy = cv.findContours(mask,cv.RETR_TREE,cv.CHAIN_APPROX_NONE)
for cnt in contours:
    approx = cv.approxPolyDP(cnt,0.01*cv.arcLength(cnt,True),True)
    if len(approx) == 4:
        cv.drawContours(mask,cnt,-1,(119,256,51),5)
mask3 = cv.resize(mask,(640,640))
cv.imshow('IMAGE', mask3)
cv.waitKey(0)
cv.destroyWindow(mask3)

'''

  • 我尝试打印 len(approx) 的值,很少有值等于 4,检测到的轮廓可能有轻微的不准确,因此可能会出现意外结果。
  • 我尝试更改
if len(approx) == 4:

if len(approx) >= 4:

Resulting image

  • 您也可以尝试完全删除条件或根据您的要求进行编辑。