Python 如何过滤遮罩中不需要的点
我想检测一种颜色,然后我在HSV工作,并使用3 tresholdPython 如何过滤遮罩中不需要的点,python,opencv,filtering,Python,Opencv,Filtering,我想检测一种颜色,然后我在HSV工作,并使用3 treshold 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(HS
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],[50170]
如您所见,结果是像素化的,我想统一检测到的每个区域。(更多的是白色,更多的是黑色,更多的是黑色)
是否有Numpy或OpenCV2函数来执行此操作
谢谢
inRange
已经为您提供了一个二进制图像,因此没有“更多的白色”或“更多的黑色”。
你要找的是形态学手术
或者,尽管可以说速度较慢,而且不完全相同,但这也是值得研究的问题。非常感谢,我将以这种方式搜索!注:对于“更多白色”我的意思是:“这个像素的白色邻域比黑色邻域多。那么它应该是白色的!在这种情况下,中值滤波器是你的理想选择,因为你的陈述本身就是中值滤波器的长短(至少在二值图像中).经过一些测试,它完全符合我的要求!非常感谢!很高兴能提供帮助。:)