我想检测一种颜色然后我在HSV中工作并使用3个阈值。
r,BGR = cap.read()
HSV = cv2.cvtColor(BGR, cv2.COLOR_BGR2HSV)
lowerb = np.array([Hrange[0],Srange[0],Vrange[0]])
higherb = np.array([Hrange[1],Srange[1],Vrange[1]])
#Values comes from a trackbar
mask= cv2.inRange(HSV, lowerb, higherb)
result = cv2.bitwise_and(BGR,BGR, mask=mask)
H,S,V范围如下: [20,40],[50-170],[50,170]
如您所见,结果是像素化的,我想统一检测到的每个区域。 (更白的是白色和更黑的黑色)
是否有Numpy或OpenCV2功能吗?
由于
答案 0 :(得分:2)
inRange
已经为您提供了二进制图像,因此没有“更白”或“更黑”。
您正在寻找的是形态学操作Erode and Dilate。
或者,虽然可以说速度较慢且不完全相同,但median filter也值得研究。