首页 > 解决方案 > 如何使用Python和openCV合并同一物体的轮廓?

问题描述

我使用了名为 cv2.findContours() 的函数来绘制轮廓,但是有些地方无法识别,这使得轮廓不连续。这是我的代码和结果。如果有人能教我如何合并同一物体的轮廓,非常感谢?

import numpy as np
import os
import cv2

image = cv2.imread("/home/rafael/Desktop/2.jpg")
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
lower = np.array([50, 10, 10])
upper = np.array([120, 255, 255])
mask = cv2.inRange(hsv, lower, upper)
res = cv2.bitwise_and(image, image, mask = mask)
kernel = np.ones((5, 5), np.uint8)
d_im = cv2.dilate(mask, kernel, iterations = 1)
e_im = cv2.erode(d_im, kernel, iterations = 1)
src, contours, hierarchy = cv2.findContours(e_im, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
temp = []
tmp = []
num = 0
for i in range(len(contours)):
    if len(contours[i]) < 35:
        temp.append(i)
for i in temp:
    del contours[i - num]
    num = num + 1
cv2.drawContours(image, contours, -1, (0, 0, 255), 2)
cv2.imwrite('/home/rafael/Desktop/13.jpg', image)

结果

完整的图片

原图

标签: pythonalgorithmopencv

解决方案


推荐阅读