【发布时间】:2020-02-11 11:13:34
【问题描述】:
我试图让 OpenCV 识别红色区域是一个轮廓,而不是将其分割成两个单独的轮廓。我曾尝试弄乱层次结构,但没有成功。有什么想法吗?
图片和代码如下。
import cv2
import numpy as np
black = (0,0,0)
# All of these are in hsv format
lb=np.array([0,181,0])
ub=np.array([6,255,255])
# Load img
img = cv2.imread('test.jpg')
img=cv2.resize(img,(400,400))
kernelOpen=np.ones((5,5))
kernelClose=np.ones((20,20))
#convert BGR to HSV
imgHSV= cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
# create the Mask
mask = cv2.inRange(imgHSV, lb, ub)
maskso=cv2.morphologyEx(mask,cv2.MORPH_OPEN,kernelOpen)
masksc=cv2.morphologyEx(maskso,cv2.MORPH_CLOSE,kernelClose)
conts,hiers=cv2.findContours(masksc.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)
# Create convex hull
hull = []
for i in range(len(conts)):
# creating convex hull object for each contour
hull.append(cv2.convexHull(conts[i], False))
# Draw contour
cv2.drawContours(img,hull,-1,black,2)
cv2.imshow("image", img)
cv2.waitKey(5000)
cv2.destroyAllWindows()
【问题讨论】:
标签: python opencv computer-vision contour