文章目录
所有相关接口验证demo以上传至仓库
代码地址:https://gitee.com/norep/learn-opencv
二值化:将图像的每个像素都变成两种值,0 或 255
全局二值化
用于对图像进行阈值操作,即根据一个阈值将图像中的像素值划分为两部分。这个函数常用于图像的二值化处理,将图像转换为仅包含黑白两种颜色的图像。
Python
(thresh, img_bin) = cv2.threshold(img, thresh, maxval, type)
参数说明:
-
img:一个 NumPy 数组,表示要进行阈值操作的源图像。这个图像应该是一个灰度图像。
-
thresh:一个浮点数,表示阈值。所有像素值大于或等于这个值的像素将被设置为最大值 maxval,所有小于这个值的像素将被设置为 0。
-
maxval:一个可选的浮点数,表示阈值操作后的像素值的最大值。默认值为 255。
-
type:一个整数,表示阈值操作的类型。
返回值:
- (thresh, img_bin):一个元组,其中 thresh 是阈值,img_bin 是阈值操作后的二值图像。
常见的阈值类型包括:
-
cv2.THRESH_BINARY:大于阈值的像素值为最大值,小于阈值的像素值为 0。
-
cv2.THRESH_BINARY_INV:大于阈值的像素值为 0,小于阈值的像素值为最大值。
-
cv2.THRESH_TRUNC:大于阈值的像素值被截断为最大值,小于阈值的像素值保持不变。
-
cv2.THRESH_TOZERO:小于阈值的像素值保持不变,大于阈值的像素值被设置为 0。
-
cv2.THRESH_TOZERO_INV:小于阈值的像素值被设置为 0,大于阈值的像素值保持不变。
举例
Python
pic1_gray = cv2.imread(pic_path, cv2.IMREAD_GRAYSCALE)
threshold, img = cv2.threshold(pic1_gray, 140, 255, cv2.THRESH_BINARY)
cv2.imshow("raw", pic1_gray)
cv2.imshow("threshold", img)
自适应阈值二值化
用于对图像进行自适应阈值处理。这种方法通过计算局部阈值来对图像进行二值化,通常用于文本识别、图像分割等场景。
全局二值化函数的整幅图像使用同一个阈值,如果图像各个区域亮度不同时,将不再适用,自适应二值化能够通过图像的局部区域亮度自动计算阈值,从而获取更好的效果。
Python
dst = cv2.adaptiveThreshold(src, maxValue, adaptiveMethod, thresholdType, blockSize, C)
参数说明:
-
src:一个 NumPy 数组,表示要进行自适应阈值处理的源图像。这个图像应该是一个灰度图像。
-
maxValue:一个浮点数,表示阈值的最大值。所有像素值大于或等于这个值的像素将被设置为最大值 maxValue,所有小于这个值的像素将被设置为 0。
-
adaptiveMethod:一个整数,表示自适应方法。
-
thresholdType:一个整数,表示阈值类型。
-
blockSize:一个整数,表示用于计算阈值的局部区域的尺寸。
-
C:一个可选的浮点数,表示偏移量。这个值会被添加到计算出的阈值。
返回值:
- dst:一个 NumPy 数组,表示自适应阈值处理后的结果图像。
常见的自适应方法包括:
-
cv2.ADAPTIVE_THRESH_MEAN_C:使用局部像素的平均值作为阈值。
-
cv2.ADAPTIVE_THRESH_GAUSSIAN_C:使用局部像素的高斯分布作为阈值。
常见的阈值类型包括:
-
cv2.THRESH_BINARY:大于阈值的像素值为最大值,小于阈值的像素值为 0。
-
cv2.THRESH_BINARY_INV:大于阈值的像素值为 0,小于阈值的像素值为最大值。
举例
Python
pic1_gray = cv2.imread(pic_path, cv2.IMREAD_GRAYSCALE)
img = cv2.adaptiveThreshold(pic1_gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 3, cv2.THRESH_BINARY)
cv2.imshow("raw", pic1_gray)
cv2.imshow("threshold", img)