图像二值化
在图像处理中经常用到二值化,图像的二值化就是将图像上的像素点的灰度值设置为0 或255。
主要来讲一下图像二值化的函数
cv2.threshold()函数的作用是将一幅灰度图二值化,基本用法如下:
cv2.threshold (src, thresh, maxval, type) cv2.threshold (源图片, 阈值, 填充色, 阈值类型)
参数含义:
- src:源图片,必须是单通道灰度图,即要进行二值化之前要对图像进行灰度处理
- thresh:阈值,取值范围0~255
- maxval:填充色,取值范围0~255
- type:阈值类型,具体有以下几种类型:
THRESH_BINARY=0, THRESH_BINARY_INV, THRESH_TRUNC, THRESH_TOZERO, THRESH_TOZERO_INV, THRESH_OTSU, THRESH_TRIANGLE, THRESH_MASK
每个类型的含义用法如下
通常情况,我们一般不知道设定怎样的阈值thresh才能得到比较好的二值化效果,只能去试。如对于一幅双峰图像(理解为图像直方图中存在两个峰),我们指定的阈值应尽量在两个峰之间的峰谷。这时,就可以用第四个参数THRESH_OTSU,它对一幅双峰图像自动根据其直方图计算出合适的阈值(对于非双峰图,这种方法得到的结果可能不理想)。
对于双峰图,我们需要多传入一个参数cv2.THRESH_OTSU,并且把阈值thresh设为0,算法会找到最优阈值,并作为第一个返回值ret返回。
cv2.THRESH_OTSU参数用法如下:
函数返回参数
ret,binary=cv2.threshold (src, thresh, maxval, type)
- ret:图像二值化处理的阈值
- binary:图像二值化处理之后的结果图
代码演示
ret,mask = cv2.threshold(gray,175,255,cv2.THRESH_BINARY)
plt.imshow(mask,cmap='gray')
![点击并拖拽以移动 wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==](https://img-blog.csdnimg.cn/2022010611434883468.gif)
上面代码的作用是,将灰度图img2gray中灰度值小于175的点置0,灰度值大于175的点置255