Opencv | 二值化操作

发布于:2024-04-26 ⋅ 阅读:(38) ⋅ 点赞:(0)

一. 二值化操作

1. cv.threshold ( ) 普通二值化

	retval, dst = cv.threshold(src, thresh, maxval, type[, dst])
	参数:
		src:原图像,应该是灰度图
		thresh:当前阈值,用于对图像进行分类
		maxval:最大阈值,一般为255,表示如果像素值大于(有时小于)阈值则要给出的值
		type:阈值类型,主要有下面几种:
			cv.THRESH_BINARY:默认的二值化方法,像素值大于阈值时设置为maxval,否则设置为0。
			cv.THRESH_BINARY_INV:反向二值化,像素值大于阈值时设置为0,否则设置为maxval。
			cv.THRESH_TRUNC:截断,像素值大于阈值时设置为阈值,否则保持不变。
			cv.THRESH_TOZERO:像素值大于阈值时保持不变,否则设置为0。
			cv.THRESH_TOZERO_INV:反向截断,像素值大于阈值时保持不变,否则设置为maxval。
		dst:结果图像,可选参数,如果不提供,将创建一个新的图像。
	返回值:
		retval:返回一个阈值,这个值是在函数内部自动计算得到的,可以不关心
		dst:二值化后的结果图像。

2. cv2.adaptiveThreshold ( ) 自适应二值化

	cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C[, dst])
	参数:
		src: 表示输入的灰度图像,这是必选项
		maxValue: 二值化后像素点的最大值,通常设置为255
		adaptiveMethod: 指定自适应阈值算法
			可以选择:
				cv.ADAPTIVE_THRESH_MEAN_C
				cv.ADAPTIVE_THRESH_GAUSSIAN_C
		thresholdType: 
			指定阈值的类型
			可以选择cv.THRESH_BINARY / cv.THRESH_BINARY_INV
		blockSize: 决定计算阈值的区域大小,通常是一个奇数
		C: 从均值或加权和中减去的常数,用于调整阈值
		dst: 可选参数,表示输出的二值图像

2.1 大津法二值化操作

	cv.threshold(img,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)

2.2 高斯模糊大律法二值化操作

	blur = cv.GaussianBlur(img,(5,5),0)
	ret3,th3 = cv.threshold(blur,0,255,cv.THRESH_BINARY+cv.THRESH_OTSU)
		高斯模糊:
		cv2.GaussianBlur(src, ksize, sigmaX, sigmaY=0, borderType=BORDER_DEFAULT)
		参数:
			src: 输入图像,可以是任意通道数的图像
			ksize: 高斯核的大小,它是一个Size对象
				   表示在每个方向上高斯核的宽度和高度:
				   		1. 必须为正数和奇数,也可以为零
				   		2. 根据sigmaX和sigmaY计算得出
			sigmaX: X方向上的高斯核标准偏差,该参数决定了高斯滤波器在水平方向上的平滑程度
			sigmaY: Y方向上的高斯核标准偏差,如果未指定,则默认为0,此时sigmaY将自动设置为与sigmaX相同的值
			borderType: 边界类型,用于指定当高斯核超出图像边界时如何处理边界像素
						默认值为BORDER_DEFAULT,表示使用反射边界处理
		作用:
			高斯模糊是一种线性平滑滤波,适用于消除高斯噪声
		场景:
			广泛应用于图像处理的减噪过程
			在实际应用中,可以根据需要调整ksize和sigma的值来控制模糊的程度
				例如,较大的ksize或sigma值会导致更强烈的模糊效果


感谢阅读🌼
如果喜欢这篇文章,记得点赞👍和转发🔄哦!
有任何想法或问题,欢迎留言交流💬,我们下次见!
本文相关代码存放位置
    【Opencv 图像变换代码实现

祝愉快🌟!