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

时间:2020-09-30 19:02:27

标签: python opencv object-detection

Image with the program applied

Image without the program applied

有人可以帮助我确定代码中的问题吗,我试图在图像中找到所有轮廓,然后在其上涂灰边,但似乎只涂了一些轮廓。 '''

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)

'''

1 个答案:

答案 0 :(得分:1)

  • 我尝试打印len(approx)的值,很少等于4的值,检测到的轮廓可能有较小的误差,这可能会导致意外的结果。
  • 我尝试更改
if len(approx) == 4:

if len(approx) >= 4:

Resulting image

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