OpenCV-图像二值化

文章目录

所有相关接口验证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)
相关推荐
Lilith的AI学习日记几秒前
Claude官方63组提示词模板全解析:从工作到生活的AI应用指南
人工智能·prompt·生活·ai编程·claude
云边有个稻草人1 分钟前
GpuGeek:为创新者提供灵活、快速、高效的云计算服务!
人工智能·大模型·算力·gpugeek平台·qwen3-32b
Wnq100721 小时前
养猪场巡检机器人的设计与应用研究
大数据·人工智能·数据挖掘·机器人·巡检机器人·北京玉麟科技巡检机器人
CM莫问7 小时前
<论文>(微软)避免推荐域外物品:基于LLM的受限生成式推荐
人工智能·算法·大模型·推荐算法·受限生成
康谋自动驾驶8 小时前
康谋分享 | 自动驾驶仿真进入“标准时代”:aiSim全面对接ASAM OpenX
人工智能·科技·算法·机器学习·自动驾驶·汽车
深蓝学院9 小时前
密西根大学新作——LightEMMA:自动驾驶中轻量级端到端多模态模型
人工智能·机器学习·自动驾驶
归去_来兮9 小时前
人工神经网络(ANN)模型
人工智能·机器学习·人工神经网络
2201_754918419 小时前
深入理解卷积神经网络:从基础原理到实战应用
人工智能·神经网络·cnn
强盛小灵通专卖员9 小时前
DL00219-基于深度学习的水稻病害检测系统含源码
人工智能·深度学习·水稻病害
Luke Ewin10 小时前
CentOS7.9部署FunASR实时语音识别接口 | 部署商用级别实时语音识别接口FunASR
人工智能·语音识别·实时语音识别·商用级别实时语音识别