我们要将一张图片首先转化为灰度图(或者是单通道的图)然后才能进行二值化处理
那在opencv里面有一个函数cv.Threshold(src, dst, threshold, maxValue, thresholdType) 可以进行二值化处理 这个直接设定阈值 就可以将大于阈值的置为一 小于的置为零。其实在文件里面我们还可以发现另一个函数:
cv.AdaptiveThreshold(src, dst, maxValue, adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C, thresholdType=CV_THRESH_BINARY, blockSize=3, param1=5) → None
这种函数也是实现二值化 但是他的原理用到了高斯滤波的概念 效果相对来说平滑一些 我利用这个函数得到了想要的结果。部分代码如下:
image=cv2.imread('1.png')
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
gra=cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH _BINARY,11,2)
也可以将里面那两个很长的参数直接设为一 效果也还不错!
希望可以帮到你!