我对OpenCV非常陌生,最近我正在尝试比较两张轨道图片:一张有火车,一张没有。在比较后,我应用了一个阈值,但是在白色区域里出现了一些“空洞”,我不想要这些。“空洞”。目前,我使用4个迭代的膨胀,并将内核设置为“无”,据我理解,“无”默认为3x3。
如何决定使用什么类型的内核,以便膨胀更好地使白色区域连续?如果可以去除背景中的小白色斑点,那就太好了。以下是代码:
resized = imutils.resize(img2, width=1050)
resized2 = imutils.resize(img3, width=1050)
grayA = cv2.cvtColor(resized, cv2.COLOR_BGR2GRAY)
grayB = cv2.cvtColor(resized2, cv2.COLOR_BGR2GRAY)
grayA = cv2.GaussianBlur(grayA,(7,7),0)
grayB = cv2.GaussianBlur(grayB,(7,7),0)
frameDelta = cv2.absdiff(grayA, grayB)
thresh = cv2.threshold(frameDelta, 20, 255, cv2.THRESH_BINARY)[1]
thresh = cv2.dilate(thresh, None, iterations=4)
本人对此完全初学者,因此非常感谢任何通用的改进比较方法的建议和意见!
closing
而不是dilation
,为了消除小点,可以使用Median Filter
而不是Gaussian Filter
,关于核大小,一种解决方案是循环使用可变的核大小,直到达到2个区域“background”和“mask”。 - Bilallen(np.unique(mask))==2
,其余部分需要尝试并确定最适合您需求的参数。 - Bilal