OpenCV中的图像阈值化操作详解(代码实现)

目录

引言

什么是图像阈值化?

cv2.threshold函数概述

python代码实现图像阈值化

完整代码展示


引言

图像处理是计算机视觉和图像分析的一个重要领域,其中阈值化是一项常用的图像处理技术之一。在OpenCV(Open Source Computer Vision Library)中,提供了许多用于图像处理的函数和工具,其中cv2.threshold函数用于执行图像阈值化操作。本篇博客将详细介绍cv2.threshold函数,包括其参数、工作原理以及如何在实际应用中使用它。

什么是图像阈值化?

图像阈值化是一种图像处理技术,它根据图像内像素点强度的分布规律设置一个阈值,然后根据像素点强度高于或低于这个阈值来进行一些处理。简单来说,就是通过设置一个阈值,将图像转换为二值图像,即像素点只有两种可能的强度值(通常是0和255)。这种处理技术可以用来突出图像中的特定区域或特征,例如边缘或纹理,从而简化后续的图像分析和处理步骤。。阈值化还可以用于分割图像中的目标对象,去除噪声,或者强调感兴趣的区域。

cv2.threshold函数概述

cv2.threshold函数是OpenCV中用于执行图像阈值化操作的函数之一。它采用图像作为输入,并根据指定的阈值将像素值分成两个类别:小于阈值的像素和大于等于阈值的像素。cv2.threshold() 函数原型如下:

ret, threshold = cv2.threshold(src, thresh, maxval, type) 

其中各参数的含义如下:

  • src:输入图像,必须是灰度图
  • thresh阈值
  • maxval:当像素值超过了阈值(或者小于阈值,取决于阈值类型)所赋予的值
  • type:阈值化的类型,它指定了像素分类的方式。OpenCV提供了多种不同的阈值化类型,包括:

    • cv2.THRESH_BINARY二值化,像素值大于阈值的被赋予maxval,小于阈值的被赋予0。
    • cv2.THRESH_BINARY_INV反二值化,与cv2.THRESH_BINARY相反,像素值大于阈值的被赋予0,小于阈值的被赋予maxval
    • cv2.THRESH_TRUNC截断,像素值大于阈值的被赋予阈值,小于阈值的不变。
    • cv2.THRESH_TOZERO设置为零,像素值小于阈值的被赋予0,大于阈值的不变。
    • cv2.THRESH_TOZERO_INV反设置为零,与cv2.THRESH_TOZERO相反,像素值小于阈值的不变,大于阈值的被赋予0。
    • cv2.THRESH_OTSU:这是 Otsu 的二值化方法。这个方法会自动计算最佳阈值,使得两类的类间方差最大。当你使用 Otsu 方法时,设置的阈值(这里是0)会被忽略,Otsu 方法会自动计算一个最佳阈值。

cv2.threshold函数将返回两个值:

  • ret:实际使用的阈值,当使用 Otsu 方法时,这个值是自动计算的阈值
  • threshold:阈值化后的图像,即像素被分为两个类别的结果。

python代码实现图像阈值化

1.读取图像 

import cv2
# 读取图像
image = cv2.imread('image.jpg', 0)  # 以灰度模式读取图像

2.使用 cv2.threshold()进行阈值化处理

# 阈值化操作
thresh, thresholded = cv2.threshold(image, 220, 255, cv2.THRESH_BINARY)

3.显示原始图像和阈值化后的图像 

# 显示原始图像和阈值化后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Thresholded Image', thresholded)

cv2.waitKey(0)
cv2.destroyAllWindows()

4.运行结果展示:

 

完整代码展示

import cv2

# 读取图像
image = cv2.imread('lufei.jpg', cv2.IMREAD_GRAYSCALE)  # 以灰度模式读取图像

# 阈值化操作
thresh, thresholded = cv2.threshold(image, 200, 255, cv2.THRESH_BINARY)

# 显示原始图像和阈值化后的图像
cv2.imshow('Original Image', image)
cv2.imshow('Thresholded Image', thresholded)

cv2.waitKey(0)
cv2.destroyAllWindows()

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值