cv2.threshold(src,thresh,maxval,type)

  • src = 输入图
  • dst = 输出图
  • thresh 阈值

maxval 当前像素超过了阈值(或者小于阈值,根据type决定),所赋予的值
type 二值化操作的类型包含以下五种{

· cv2.THRESH_BINARY 超过阈值部分去maxval(最大值,否则取0)
· cv2.THRESH_BINARY_INV (上面的反转)
· cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变
· cv2.THRESH_TOZERO 大于阈值部分不变,否则设为0
· cv2.THRESH_TOZERO_INV 上面的反转
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import cv2
import matplotlib as plt
import numpy as np
'''ret,dst = cv2.threshold(src,thresh,maxval,type)'''
'''
src = 输入图
dst = 输出图
thresh 阈值
maxval 当前像素超过了阈值(或者小于阈值,根据type决定),所赋予的值
type 二值化操作的类型包含以下五种{

· cv2.THRESH_BINARY 超过阈值部分去maxval(最大值,否则取0)
· cv2.THRESH_BINARY_INV (上面的反转)
· cv2.THRESH_TRUNC 大于阈值部分设为阈值,否则不变
· cv2.THRESH_TOZERO 大于阈值部分不变,否则设为0
· cv2.THRESH_TOZERO_INV 上面的反转
}
'''
img = cv2.imread("a28.png")
ret,THRESH_BINARY = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV,0)
ret,THRESH_BINARY_INV = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV,0)
ret,THRESH_TRUNCY = cv2.threshold(img,127,255,cv2.THRESH_TRUNC,0)
ret,THRESH_TOZERO = cv2.threshold(img,127,255,cv2.THRESH_TOZERO,0)
ret,THRESH_TOZERO_INV = cv2.threshold(img,127,255,cv2.THRESH_TOZERO_INV,0)


#或者这样
title = ['THRESH_BINARY','HRESH_BINARY_INV','THRESH_TRUNCY','THRESH_TOZERO','THRESH_TOZERO_INV']
images = [THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNCY,THRESH_TOZERO,THRESH_TOZERO_INV]

for i in range(5):
plt.subplot(3,3,i+1),plt.imshow(images[i],'gray')
plt.title(title[i])
plt.xticks([]),plt.yticks([])
plt.show()