OpenCv阈值化处理cv2.threshold()函数

本文介绍了图像处理中的阈值化技术,包括全局阈值和自适应阈值算法。通过OpenCV的cv2.threshold()函数,演示了如何使用不同类型的阈值方法进行二值化处理,如BINARY、BINARY_INV、TRUNC、TOZERO和TOZERO_INV,并展示了处理前后的图像对比。
摘要由CSDN通过智能技术生成

阈值化处理:

阈值处理是指剔除图像内像素值高于一定值或者低于一定值的像素点;例如,全局阈值法方法就是将图像中低于某个阈值的像素设置为黑色(0),而其他的设置为白色(255)。全局固定阈值很容易理解,就是对整幅图像都是用一个统一的阈值来进行二值化。 自适应阈值算法:(自适应计算合适的阈值,而不是固定阈值)。

在OpenCv中,我们可以通过使用cv2.threshold()函数。
threshold函数及参数说明:

cv2.threshold(src, thresh, maxval, type[, dst]) -> retval, dst
src 参数表示输入图像(多通道,8位或32位浮点)。
thresh 参数表示阈值。
maxval 参数表示与THRESH_BINARY和THRESH_BINARY_INV阈值类型一起使用设置的最大值一般为255。
type 参数表示阈值类型。
retval 参数表示返回的阈值。若是全局固定阈值算法,则返回 hresh 参数值。若是全局自适应阈值算法,则返回自适应计算得出的合适阈值。
dst 参数表示输出与src相同大小和类型以及相同通道数的图像。

其中type阈值类型可取:
二值化阈值处理(CV2.THRESH_BINARY)
反二值化阈值处理(CV2.THRESH_BINARY_INV)
截断阈值化处理(CV2.THRESH_TRUNC)
超阈值零处理(CV2.THRESH_TOZERO_INV)
低阈值零处理(CV2.THRESH_TOZERO)

实例:

import cv2
import matplotlib.pyplot as plt
def thd():
    filepath='/data/workspace/myshixun/task1/'
    img = cv2.imread(filepath+'cat.jpg')
    img = img[:,:,(2,1,0)]
    #把读入的图片转换为灰度图
    img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

    ret1,thresh1 = cv2.threshold(img_gray,150,255,cv2.THRESH_BINARY)
    ret2,thresh2 = cv2.threshold(img_gray,150,255,cv2.THRESH_BINARY_INV)
    ret3,thresh3 = cv2.threshold(img_gray,150,255,cv2.THRESH_TRUNC)
    ret4,thresh4 = cv2.threshold(img_gray,150,255,cv2.THRESH_TOZERO)
    ret5,thresh5 = cv2.threshold(img_gray,150,255,cv2.THRESH_TOZERO_INV)

    # 作图并保存到指定路径
    titles = ['Original Image', 'BINARY', 'BINARY_INV', 'TRUNC', 'TOZERO', 'TOZERO_INV']
    images = [img, thresh1, thresh2, thresh3, thresh4, thresh5]
    for i in range(6):
        plt.subplot(2, 3, i + 1), plt.imshow(images[i], 'gray')
        plt.title(titles[i])
        plt.xticks([]), plt.yticks([])
    plt.savefig(filepath+'out/threthold.png')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值