OpenCV–图像阈值
作用:依次遍历单通道图像中的每一个像素点,如果超过所设置的阈值,则按到相应的方法将将该像素点从新赋值。
函数:
retval, dst = cv.threshold( src, thresh, maxval, type[, dst] )
retval
:设置的阈值;dst
:返回处理的图像;src
:输入的图像;thresh
:阈值;maxval
:当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值;type
:二值化操作的类型,包含以下5种类型,cv2.THRESH_BINARY
:超过阈值部分取maxval(最大值),否则取0cv2.THRESH_BINARY_INV
: THRESH_BINARY的反转cv2.THRESH_TRUNC
: 大于阈值部分设为阈值,否则不变cv2.THRESH_TOZERO
: 大于阈值部分不改变,否则设为0cv2.THRESH_TOZERO_INV
:THRESH_TOZERO的反转
代码示例:
cat_gray = cv.imread("./img/cat.jpg", 0)
ret1, dst1 = cv.threshold(cat_gray, 127, 255, cv.THRESH_BINARY)
ret2, dst2 = cv.threshold(cat_gray, 127, 255, cv.THRESH_BINARY_INV)
ret3, dst3 = cv.threshold(cat_gray, 127, 255, cv.THRESH_TRUNC)
ret4, dst4 = cv.threshold(cat_gray, 127, 255, cv.THRESH_TOZERO)
ret5, dst5 = cv.threshold(cat_gray, 127, 255, cv.THRESH_TOZERO_INV)
titles = ['Original Image', 'Binary', 'Binary_inv', 'Trunc', 'Tozero', 'Tozero_inv']
images = [cat_gray, dst1, dst2, dst3, dst4, dst5]
for i in range(6):
plt.subplot(2, 3, i+1), plt.imshow(images[i], "gray")
plt.title(titles[i])
plt.xticks([]), plt.yticks([])
plt.show()