使用OpenCV的函数threshold()对图像进行二值化或阈值化处理

如果一幅图像,其像素的灰度值只有两个取值,那么这样的图像我们就称作二值图像。
把图像转化为二值图像的过程称为图像的二值化处理。

如果对图像的灰度值按与某个值的大小关系进行新值的设置,称为叫图像的阈值化处理。

在OpenCV中,可以使用函数threshold()对图像作二值化或阈值化处理。

其原型如下:
C++原型如下:

double cv::threshold(InputArray src,
                     OutputArray dst,
                     double thresh,
                     double maxval,
                     int type)

Python原型如下:

retval, dst	= cv.threshold(src, thresh, maxval, type[, dst])

参数意义如下:
src—输入图像,即待二值化的图像,可以是多通道,8位或32位符点型数据类型的图像,但是当参数type选择THRESH_OTSU或THRESH_TRIANGLE时,图像只能为8位的单通道图像。

dst—经过二值化处理的输出图像。

thresh—进行二值化处理的阈值。当type选择THRESH_OTSU或THRESH_TRIANGLE时,这个值被忽略,此时函数用通过OTSU法或TRIANGLE法计算出的阈值进行二值化操作。

maxval—二值化处理后的maxval值,详情见对参数type的介绍。当type选择THRESH_BINARY、THRESH_BINARY_INV、THRESH_OTSU、THRESH_TRIANGLE时会用到它,在type选择其它类型时,虽然它没有用,但也要填上它。

type—这个参数的可选枚举值及意义如下:
在这里插入图片描述
要特别注意的是,在Python环境中,函数threshold()的返回值有两个,分别为retval和dst。
第一个retval代表函数threshold()在进行二值化处理时使用的阈值,这一点挺好,特别是对于type选择THRESH_OTSU或THRESH_TRIANGLE时,我们可以知道进行二值处理时用的阈值究竟是多少。
如果不想使用retval这个返回值,可以像下面这样调用:

_, dst = cv.threshold(src, thresh, maxval, type[, dst])

即用下划线命名返回值retval。

明白了以上各参数的意义和可取值后,就基本了解了函数threshold()的使用,接下来再看看示例代码就能完全掌握了。

示例代码请大家访问本博文的原文查看,
本博文的原文链接如下:

https://www.hhai.cc/thread-162-1-1.html
在本博文的原文中,向大家提供了以下四个示例代码及它们的运行结果:
①当type取值为THRESH_BINARY 、THRESH_BINARY_INV 、THRESH_TRUNC、THRESH_TOZERO 、THRESH_TOZERO_INV 时的Python代码;
②当type取值为THRESH_BINARY 、THRESH_BINARY_INV 、THRESH_TRUNC、THRESH_TOZERO 、THRESH_TOZERO_INV 时的C++代码;
③当type取值为THRESH_OTSU 、THRESH_TRIANGLE时的Python示例代码;
④当type取值为THRESH_OTSU 、THRESH_TRIANGLE时的C++示例代码。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值