Python-OpenCV4中的阈值二值化函数threshold(),要特别注意其返回值有两个

关于OpenCV4中的函数threshold(),之前已经写过博文介绍了,详情见下面的链接:
https://www.hhai.cc/thread-162-1-1.html

这篇博文主要是提醒大家函数threshold()的Python版本的返回值有两个。

首先我们再来回顾下它的C++原型,其C++原型是没有返回值的:

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

可见,C++原型的确是没有返回值的。
但C++原型没有返回值不代表Python版没有,Python版的原型如下:

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

从中,我们可以看出有两个返回值,分别为retval和dst。
dst的含义自不必说,就是二值化处理的图像。
retval的含义为函数threshold()在进行二值化处理时使用的阈值的数值。

第二个参数retval我们一般是不用的,如果我们不想用第二个参数retval,那怎么办呢?
像下面这样书写代码就行了:

_, B1_step06_1 = cv.threshold(B1_step06_1, 150, 255, cv.THRESH_BINARY)

即把第一个返回值用名字为下划线"_"的变量存储。

如果你把上面的代码写成下面这样:

B1_step06_1 = cv.threshold(B1_step06_1, 150, 255, cv.THRESH_BINARY)

则这句代码运行时不会报错,但是后续对二值化图像B1_step06_1的调用会出问题,此时B1_step06_1不再是一幅二值化的图像,而是包含了两个元素的元组,元组的第0个元素是返回值retval,第2个元素才是二值化后的图像,如下图所示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值