《OpenCV轻松入门:面向Python》读书笔记
作者:李立宗
出版社:电子工业出版社
出版时间:2019-05
第6章 阈值处理
阈值处理是指剔除图像内像素值高于一定值或者低于一定值的像素点。
OpenCV提供了函数cv2.threshold()和函数cv2.adaptiveThreshold(),用于实现阈值处理。
6.1 threshold函数
OpenCV 3.0使用cv2.threshold()函数进行阈值化处理,该函数的语法格式为:
retval, dst = cv2.threshold( src, thresh, maxval, type )
式中:
- retval代表返回的阈值。
- dst代表阈值分割结果图像,与原始图像具有相同的大小和类型。
- src代表要进行阈值分割的图像,可以是多通道的,8位或32位浮点型数值。
- thresh代表要设定的阈值。
- maxval代表当type参数为THRESH_BINARY或者THRESH_BINARY_INV类型时,需要设定的最大值。
- type代表阈值分割的类型,具体类型值如表6-1所示。
6.1.1 二值化阈值处理(cv2.THRESH_BINARY)
二值化阈值处理会将原始图像处理为仅有两个值的二值图像.
- 对于灰度值大于阈值thresh的像素点,将其灰度值设定为最大值。
- 对于灰度值小于或等于阈值thresh的像素点,将其灰度值设定为0。
在8位图像中,最大值是255。因此,在对8位灰度图像进行二值化时,如果将阈值设定为127,那么: - 所有大于127的像素点会被处理为255。
- 其余值会被处理为0。
6.1.2 反二值化阈值处理(cv2.THRESH_BINARY_INV)
6.1.3 截断阈值化处理(cv2.THRESH_TRUNC)
截断阈值化处理会将图像中大于阈值的像素点的值设定为阈值,小于或等于该阈值的像素点的值保持不变。
6.1.4 超阈值零处理(cv2.THRESH_TOZERO_INV)
超阈值零处理会将图像中大于阈值的像素点的值处理为0,小于或等于该阈值的像素点的值保持不变。
6.1.5 低阈值零处理(cv2.THRESH_TOZERO)
低阈值零处理会将图像中小于或等于阈值的像素点的值处理为0,大于阈值的像素点的值保持不变。
3)程序
import cv2
img=cv2.imread("lena.bmp")
t,rst=cv2.threshold(img,127,255,cv2.THRESH_TOZERO)
cv2.imshow("img",img)
cv2.imshow("rst",rst)
cv2.waitKey()
cv2.destroyAllWindows()
网友评论