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)
相关推荐
深蓝AI28 分钟前
12000 名工程师的高盛,只用四个月就收回了交易员的 AI 编程权限
人工智能·程序员
怕浪猫4 小时前
这个十几个agent 协作项目值得关注
人工智能·面试·github
starzy19906 小时前
深入理解Scala隐式类:扩展方法机制
开发语言·人工智能·scala
深蓝AI7 小时前
为什么 agent 的 demo 都很惊艳,上了生产就不靠谱
人工智能·程序员
数字新视界7 小时前
信创动环监控在机房环境管理中的智能化应用与实践分析
大数据·人工智能·物联网·信息与通信·动环监控系统
岁月宁静7 小时前
DeepSeek Harness 实战与架构解析:让 Agent 从“会聊”到“能交付”
人工智能·python·agent
深蓝AI8 小时前
一个项目五个 AI 同时干活,Claude Code 怎么让它们不互相打架
人工智能·程序员
forest_098 小时前
多 Agent 协作第二课:交叉验证≠独立验证
人工智能·python·算法·机器学习·prompt·agi
ZONGYUAN-ROOT9 小时前
【工具治理】Nginx换机丢16子域事故复盘
人工智能
dozenyaoyida9 小时前
AI与大模型新闻日报 | 2026-11-08
人工智能·搜索引擎·ai·大模型·新闻