图像处理-自适应的二值化图像

1、问题描述

在使用全局阈值可能会导致局部区域全黑,但是使用自适应阈值的二值化能够很好的避免这样的问题。使用opencv提供的adaptiveThreshold算法技能实现了。adaptiveThreshold算法的思想不是计算图像的全局阈值,而是计算图片的局部阈值,根据图像不同区域亮度分布,计算局部阈值,所以对于图像不同区域,能够计算不同阈值,因此又被称作自适应算法。

2、效果展示

同样是使用Lenna图来进行实验。左侧是使用全局阈值处理的二值化图像,右侧是使用adaptiveThreshold函数处理二值化的图像,可见效果还是挺明显的。

在这里插入图片描述

3、具体代码

#注意这里传进来的是灰度图
def binaryzation(img):
    th1 = cv.adaptiveThreshold(img, 255, cv.ADAPTIVE_THRESH_MEAN_C,cv.THRESH_BINARY, 11, 2)
    ret2, th2 = cv.threshold(img, 127, 255, cv.THRESH_BINARY)
    ret3, th3 = cv.threshold(img,127,255,cv.THRESH_BINARY_INV)
    ret4, th4 = cv.threshold(img, 127, 255, cv.THRESH_TRUNC)
    temp1 = cv.hconcat((th2,th1))
    temp2 = cv.hconcat((th3,th4))
    temp = cv.vconcat((temp1,temp2))


    cv.imshow("result",temp)
    cv.waitKey()

4、运行结果

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/xdg15294969271/article/details/121818174