【OpenCV3.3+Python3.6】图像二值化处理函数cv2.threshold

图像二值化

 

在图像处理中经常用到二值化,图像的二值化就是将图像上的像素点的灰度值设置为0 或255。

主要来讲一下图像二值化的函数

cv2.threshold()函数的作用是将一幅灰度图二值化,基本用法如下:

cv2.threshold (src, thresh, maxval, type)         cv2.threshold (源图片, 阈值, 填充色, 阈值类型)

参数含义:

  1. src:源图片,必须是单通道灰度图,即要进行二值化之前要对图像进行灰度处理
  2. thresh:阈值,取值范围0~255
  3. maxval:填充色,取值范围0~255
  4. type:阈值类型,具体有以下几种类型:

THRESH_BINARY=0,  THRESH_BINARY_INV,   THRESH_TRUNC,  THRESH_TOZERO,   THRESH_TOZERO_INV, THRESH_OTSU,  THRESH_TRIANGLE,   THRESH_MASK

每个类型的含义用法如下

【OpenCV3.3+Python3.6】图像二值化处理函数cv2.threshold_第1张图片

通常情况,我们一般不知道设定怎样的阈值thresh才能得到比较好的二值化效果,只能去试。如对于一幅双峰图像(理解为图像直方图中存在两个峰),我们指定的阈值应尽量在两个峰之间的峰谷。这时,就可以用第四个参数THRESH_OTSU,它对一幅双峰图像自动根据其直方图计算出合适的阈值(对于非双峰图,这种方法得到的结果可能不理想)。

对于双峰图,我们需要多传入一个参数cv2.THRESH_OTSU,并且把阈值thresh设为0,算法会找到最优阈值,并作为第一个返回值ret返回。

cv2.THRESH_OTSU参数用法如下:

函数返回参数

ret,binary=cv2.threshold (src, thresh, maxval, type)

  1. ret:图像二值化处理的阈值
  2. binary:图像二值化处理之后的结果图 


代码演示

ret,mask = cv2.threshold(gray,175,255,cv2.THRESH_BINARY)
plt.imshow(mask,cmap='gray')
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

上面代码的作用是,将灰度图img2gray中灰度值小于175的点置0,灰度值大于175的点置255

你可能感兴趣的:(图像算法,python,opencv,图像二值化,opencv,python)