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)
相关推荐
waterfeeling2 小时前
用 Context7 做一次点云配准的调研—测试—报告闭环:鲁棒 ICP
人工智能
Data-Miner5 小时前
面对 AI 大模型智能涌现,如何从技术层面保护好隐私与数据安全?
大数据·人工智能
hpoenixf6 小时前
当 AI 开始谈“买什么”,研究助手离投顾和交易还有多远?
人工智能
大模型真好玩6 小时前
如何让视频模型对你言听计从?结构化提示词助你生成电影级画面
人工智能·agent·deepseek
zhang133830890756 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
特立独行的猫a6 小时前
会说确认叫车才下单-启元机器人官方滴滴打车技能源码详解
人工智能·机器人·技能·启元机器人
老金带你玩AI6 小时前
GPT-6.1 Terra上线:更便宜了,干活到底怎么样?
人工智能
会议咨询7 小时前
2027年电力电子、人工智能与大数据国际会议(PEABD 2027)
大数据·人工智能·电力电子
Jsundoku7 小时前
第五章 深度学习 -- 卷积神经网络
人工智能·深度学习·cnn
水如烟7 小时前
孤能子视角:SEP《人工智能的认识论》EIS读法·理解——理解幻觉与解压缩幻觉:同一缺口,两份报告
人工智能