☞ ░ 前往老猿Python博文目录 ░
一、概述
openCV图像的阈值处理又称为二值化,之所以称为二值化,是它可以将一幅图转换为感兴趣的部分(前景)和不感兴趣的部分(背景)。转换时,通常将某个值(即阈值)当作区分处理的标准,通常将超过阈值的像素作为前景。
阈值处理有2种方式,一种是固定阈值方式,又包括多种处理模式,另一种是非固定阈值,由程序根据算法以及给出的最大阈值计算图像合适的阈值,再用这个阈值进行二值化处理,非固定阈值处理时需要在固定阈值处理基础上叠加组合标记,叠加方式就是与固定阈值方式的标记相或。
二、语法说明
调用语法:
retval, dst = cv2.threshold (src, thresh, maxval, type)
其中:
- src:源图像,8位或32位图像的numpy数组
- thresh:阈值,0-255之间的数字,在进行处理时以阈值为边界来设不同的输出,阈值判断时,是以小于等于阈值和大于阈值作为分界条件
- maxval:最大阈值,当使用固定阈值方法时为指定阈值,当叠加标记时为允许最大的阈值,算法必须在小于该值范围内计算合适的阈值
- type:处理方式,具体取值及含义如下:
- dst:阈值化处理后的结果图像numpy数组,其大小和通道数与源图像相同
- retval:叠加cv2.THRESH_OTSU或cv2.THRESH_TRIANGLE标记后返回真正使用的阈值
三、彩色图像处理
从threshold 的说明来看是支持32为彩色图像处理的,但网上几乎找不到关于处理彩色图像的机制说明及案例,经过老猿验证测试,对threshold 处理彩色图像的机制说明如下:
如果是32位彩色图像,则是以RGB每个通道的值单独与阈值进行比较,按每个通道进行阈值处理,返回的是一个阈值处理后的RGB各自的值,即还是32位图像。
案例:
img1 = cv2.imread(r"F:screenpic
edflower.jpg")
ret,img2 = cv2.threshold(img1, 35, 255, cv2.THRESH_BINARY)
cv2.imwrite(r"F:screenpic
edflower_threshold.jpg",img2)
效果:
源图:
处理后图:
关于老猿的付费专栏
老猿的付费专栏《使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,付费专栏《moviepy音视频开发专栏》详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,两个专栏加起来只需要19.9元,都适合有一定Python基础但无相关专利知识的小白读者学习。这2个收费专栏都有对应免费专栏,只是收费专栏的文章介绍更具体、内容更深入、案例更多。
付费专栏文章目录:《moviepy音视频开发专栏文章目录》、《使用PyQt开发图形界面Python应用专栏目录》。
关于Moviepy音视频开发的内容,请大家参考《Python音视频剪辑库MoviePy1.0.3中文教程导览及可执行工具下载》的导览式介绍。
对于缺乏Python基础的同仁,可以通过老猿的免费专栏《专栏:Python基础教程目录》从零开始学习Python。
如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。