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)
相关推荐
蹦蹦跳跳真可爱589几秒前
Python----NLP自然语言处理(中文分词器--jieba分词器)
开发语言·人工智能·python·自然语言处理·中文分词
蹦蹦跳跳真可爱58910 分钟前
Python----OpenCV(图像分割——彩色图像分割,GrabCut算法分割图像)
开发语言·图像处理·人工智能·python·opencv·计算机视觉
Chef_Chen2 小时前
从0开始学习计算机视觉--Day09--卷积与池化
深度学习·学习·计算机视觉
charley.layabox6 小时前
8月1日ChinaJoy酒会 | 游戏出海高端私享局 | 平台 × 发行 × 投资 × 研发精英畅饮畅聊
人工智能·游戏
DFRobot智位机器人7 小时前
AIOT开发选型:行空板 K10 与 M10 适用场景与选型深度解析
人工智能
想成为风筝9 小时前
从零开始学习深度学习—水果分类之PyQt5App
人工智能·深度学习·计算机视觉·pyqt
F_D_Z9 小时前
MMaDA:多模态大型扩散语言模型
人工智能·语言模型·自然语言处理
大知闲闲哟10 小时前
深度学习G2周:人脸图像生成(DCGAN)
人工智能·深度学习
飞哥数智坊10 小时前
Coze实战第15讲:钱都去哪儿了?Coze+飞书搭建自动记账系统
人工智能·coze
wenzhangli710 小时前
低代码引擎核心技术:OneCode常用动作事件速查手册及注解驱动开发详解
人工智能·低代码·云原生